ILogStuff - enabling logging from `connection_impl` and transports

Note that a side effect of this change is that we now will be able to raise events from transports since transports now will have a (smart) pointer to the connection_impl instance.
It will still be race'y because we unblock the event in the `receive()` but the exception is handled in a continuation of receive. As a result we have 2 threads running - the main thread (which currently sleeps) and the `receive_loop` which is handling the exception. Since the `receive_loop` is private and does recursively schedule itself I don't think there is a way to avoid this race.