Introduce ConnectionPoolKeyStrategy

The general idea is to be able to control at request level the connection used to sent it.
This is implemented with an optional `ConnectionPoolKeyStrategy` passed on the Request object.

For example, one can pass a `ConnectionPoolKeyStrategy` that combines a user UUID the default `DefaultConnectionPoolStrategy`.

Currently only works for Netty provider.