DontBuyBreweryToDrinkAPint - removing reference to connection from transports

The only reason why transports were coupled to the `connection_impl` was because they needed to be able to log things. However this would create a circular reference between a transport and `connection_impl` (in the future) which would lead to memory leaks. One of the ways to avoid the leak would be to use a `weak_ptr<connection_impl>` but since we only want to get a logger it is just better to pass the logger instead of the connection. This not only removes the situation leading to memory leaks but also makes testing easier. If we end up needing a reference to `connection_impl` in the future we will revisit.