* Implements async_run as a FSM and adds tests
* Places all sans-io variables in connection_impl in a connection_state struct
Entails no functional change.
* Refactors the writer task into a FSM and adds unit tests.
* Adds a testing utility to check logging.
Entails no functional change (other than cosmetic word fixes to the logs).
Data rotation in the read buffer creates latency, we know it
is preset but so far its magnitude was unknown. This PR adds
it as a new field to the usage struct. For example, the
test_conn_echo_stress outputs now
Commands sent: 780,002
Bytes sent: 32,670,085
Responses received: 780,001
Pushes received: 750,001
Bytes received (response): 3,210,147
Bytes received (push): 32,250,036
Bytes rotated: 3,109,190,184
In total approximately 34Mb are received but 3Gb are
rotated.