LeakyCallback - removing leak caused by binding the `process_response` c...

...allback to a shared_ptr

We bound the `connection_impl::process_response` to a connection_impl shared_ptr and passed it to the transport. This resulted in a hidden circular dependency between the transport and the `connection_impl` which prevented from releasing the `connection_impl` instance. Since the transport was meant to be released when the `connection_impl` is being released it was not. Eventually the transport dtor was the last resort to stop the receive loop but since it was not called the receive loop was not stopped.