Use a connection pool to reuse SSH connections.

Using a connection pool saves time of negotiating a new SSH
connection for every SSHKit `on()` block. When testing with a simple
capistrano recipe, a `cap deploy` ran 10-15% faster with this
connection pool.

By default, an existing pooled connection will be replaced with a
new connection if it hasn't been used for more than 30 seconds. This
can be changed, e.g.:

```
SSHKit::Backend::Netssh.pool.idle_timeout = 60 # seconds
```

Setting the timeout to 0 will disable pooling (connections will not
be reused).

Note that the connection pool will not recover gracefully if a
connection somehow "goes bad". For example, if the server closes an
idle connection, or if the underlying socket gets reset, a subsequent
command sent to that server could fail, and the command will not be
retried with a new connection. Therefore it is a good idea to use a
conservative (small) value for the idle_timeout.