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.