Add gateway support.

When a gateway is declared (globally or per host), a connection is created to this gateway to encapsulate
all the connections to the hosts using this gateway.

Add hash SSHKit::Backend::ConnectioPool.connections instead of using Thread.current hash.
This allows for multiple threads requesting connections to the same host to reuse the same connections.

Add SSHKit::Host.gateway

Add SSHKit::Backend::Netssh::Configuration.gateway

M