Changing names of Cluster implementations to be a bit more descriptive
Removed unused variable in test
Changed ServerAddress.toString to just return host:port
JAVA-930, JAVA-931: Refactored DiscoveringCluster and tests.  Improved test coverage.
DiscoveringCluster now detects Mixed (i.e. misconfigured) cluster types and throws from getServer if detected.
DiscoveringCluster now invalidates any existing primaries in a replica set whenever a primary sends a notification.
JAVA-284: Support replicaSet option in URI and requiredReplicaSetName is MongoClientOptions
JAVA-284: Refactoring ClusterFactory and Cluster implementations to take a ClusterSettings instead of just the list of server addresses.
This allows passing of additional required settings, like cluster mode and required replica set name.
Ensure that the replica set that the cluster connects to has a name than matches the specified required replica set name.
Removed redundant ClusterMode, replaced with ClusterConnectionMode.
Renamed values in the latter to Single, Multiple.
Added requiredClusterType to ClusterSettings, along with additional error checking
Changed names of Cluster implementation classes to better reflect their intent.
JAVA-930: Removed ClusterType.Mixed and instead don't add servers to ClusterDescription that don't obey the cluster type.
Support a single StandAlone server in MultiServerCluster.
Enforce cluster settings in SingleServerCluster
JAVA-930: Fixed a race condition in MultiServerCluster.
JAVA-930: Passing ServerDescription instead of ChangeEvent to private methods, since only the new value is needed
JAVA-930: Have to reset the server description in the map when invalidating.