Cleanup resource leak in ChannelPool

Currently, we allow at most 5 inflight requests to a given host. If another request comes to the same host,
it is queued in the waitingWrites queue in the channel pool.

If the host is slow, the request will be timed out upstream and the request object will be cleaned in the
ClientChannelHandler, etc.

However, these requests are never cleaned from the waitingWrites queue in the ChannelPool. This patch
amends this state of afairs. Now each channel pool will have a cleaner thread which removes requests
which have been timed out and removed from the ClientChannelHandler.