A connection pool that maintains connections by route.
This class is derived from MultiThreadedHttpConnectionManager
in HttpClient 3.x, see there for original authors. It implements the same
algorithm for connection re-use and connection-per-host enforcement:

connections are re-used only for the exact same route

connection limits are enforced per route rather than per host

Note that access to the pool data structures is synchronized via the
poolLock in the base class,
not via synchronized methods.

freeEntry

Returns an entry into the pool.
The connection of the entry is expected to be in a suitable state,
either open and re-usable, or closed. The pool will not make any
attempt to determine whether it can be re-used or not.