Add unit test for AbstractReconnectionHandler.
Change AbstractReconnectionHandler to yield to a previously running handler.

Also, expose a single Future in currentAttempt instead of switching in
the Futures from the executor. This makes it easier for clients to test
whether a handler is running at a given time.
Ensure control connection does not trigger concurrent reconnects (JAVA-497).
Refactor test classes.

- introduce custom AssertJ assertion for Cluster
- move waitFor methods to CCMBridge
Keep trying to reconnect on authentication errors (JAVA-472).
Expose close method on load balancing policy (JAVA-463).
Allow load balancing policy to trigger refresh for a single host (JAVA-459).
Move test method.
Make AbstractReconnectionHandler use a ListenableFuture.
Ensure failed reconnection attempts don't re-trigger onDown.
Expose an API to cancel reconnection attempts (JAVA-493).
Fix misplaced test class.
Fix NPE when a connection fails during pool construction (JAVA-503).
Log datacenter name in DCAware policy's init when it is explicitly provided (JAVA-423).
Disable test that causes timeouts on Jenkins.
Shuffle the replicas in TokenAwarePolicy.newQueryPlan (JAVA-504).
Fix timing issue on Jenkins.
Make schema agreement wait tuneable (JAVA-507).
Document how to inject the driver metrics into another registry (JAVA-494).
Try again to fix Jenkins timing issue.