Update comments and add a TODO note on the default host context
Cosmetic
Cleanup HostContext interface to get more compliant with Demeter

* Stop exposing the internal queue
* Offer a handy method to terminate all connections with a single reason (implicit internal iteration rather than explicit external iteration)
* Add isCleanable boolean method to allow the client to query the context whether it can be cleaned (has no open connections nor queued requests) or not
Remove redundant condition

When connectionFailed() is called on a ConnectionPool, hasConnectionFailures() will ALWAYS return true so it's pointless to test that condition.
Break DefaultHttpClientTest into spec and integration test

* Spec only tests fast conditions such as property restrictions
* Integration test contains all network touching code (i.e. interactions with a real server)
Change acceptable HTTP verbs for requests with data sink listener

* Added PATCH to list (previously just POST and PUT)
* Add specs to test this condition
Make ConnectionPool a creation argument of DefaultHostContext

Instead of passing the maxConnections params, the connection pool now controls this (merely indicative) value. This value **does not** enforce anything, it just controls whether ConnectionPool's hasSlotsAvailable() returns true or false, based on the number of connections open and/or opening
Ensure request host/port always matches host context host/port
Add specs for DefaultHostContext and EagerDrainHostContext
Kill EagerDrainHostContext class but make its behavior the default

It's pointless having both when the difference between them is merely an implementation detail. By killing an option it's one less choice the programmer has to make.
Major overhaul

* Drop HostContext interface, go with a single class, HostController
* Expose connection event methods on HostController but delegate implementation details to ConnectionPool
* Rename HttpRequestContext to RequestContext
* Move HostController, RequestContext and ConnectionPool to utils package
Delete methods that don't support formattable description
Major overhaul, part 2

* Remove prefix "Http" from all Future related classes
* Kill the future factory
* RequestFuture interface still exposes query methods but the trigger methods are now public methods on the implementation (the API exposes the interface but knows the implementation internally)
* Optimize imports
Rename spec to map the class it refers to
Neat lombok trick to expose ConnectionPool API on HostController

Using the @Delegate annotation, all the public methods of an instance var are exposed as methods of the containing class.
Cosmetics
Add specs for await*() family of methods on RequestFuture
Enforce spec timeouts on await*() family of methods
Cleanup & cosmetics
Expose more stats on stats gathering client