Added -Xint for JDK8 and unignored tests from 6b30f74ae0
Added codenarc, a sort of checkstyle for Groovy.  Fixed up a lot of the failures, but the rest need fixing .  It's currently set to not fail the build.
Moved add connection-related implementation classes to org.mongodb.connection.impl.  I'm not too happy with the package name, so it will probably change, but having a separate package feels right.
Removed test dependency on NativeAuthenticator so it could be made non-public.
Added ClusterFactory interface and DefaultClusterFactory implementation, so I could make the two Cluster implementations package private.
Simplified authenticating connections.  Since we're not going to allow the credential list to be mutable, the catching authenticators (sync and async) are over-complicated.  Those classes don't pull enough weight as a result, so inlined them into the authenticating connection classes.
Making sure that future init method is only called once.
Fixed a regression in AuthenticatingConnection on checking for isClosed().  Need to also check if wrapped Connection isClosed().
Fixed a test that was failing when running against a server with auth enabled
Fixed remaining codenarc errors and turn on failOnError for codenarc
Fixed up tests that got lost in the merge
Fixed a test that was failing when running against a server with SSL enabled
Added Connection.open method.  This will be useful when we want to ensure connection pool minimum size.
Fixed up more groovy warnings, and updated QueryBuilder so it wouldn't cause build warnings - yay!
Made a public method private
Added some UML diagrams
Setup the checks we want for Javadoc, but they're still commented out because there's a lot of documentation left to do...
Created FunctionalSpecification to share common setup/tear down code between Spock functional tests
Moved shared test stuff into Fixture, and improved encapsulation of Test super-classes.
Moved driver-compat old tests into separate sourceSet