tunnelTo

The `connection` is established between the client and the tunnel service.
The implementation of this method does necessary protocol dance to
instruct the tunnel service to tunnel to the server (at host:port).

When this action succeeds, the resulting TcpConnection is used by the client
to communicate to the server, as if it's a direct connection.
The resulting TcpConnection could be the same object as the `connection` argument.