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).