* 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).