Fix memory leaking. HostConnectionPool intances are being retained forever
Make HostConnectionPool IDisposable

- Unsubscribe to Host.Down event when disposing
- Invoke Connection.Dispose() from the pool
merging with 2.1 master