Refactor Netty channel pool for 1.9, close #201, close #623

Introduce ChannelManager, in charge of logic and limits.

Limits are handled with Semaphores:
  * `tryAcquire` is preemptively done when we're about to open a new Channel
  * `release` is either done if connection failed, or when the Handler is notified that the Channel is closed

We now properly support maxConnectionsPerHost.