Replaced ReplicaSetCluster interface marker with ClusterDescription.Mode and ClusterDescription.Type enumerations.
Refactored latency minimization logic into its own ServerSelector, called LatencyMinimizingServerSelector.  Introduce ChainingServerSelector base class to make it easy for multiple ServerSelector implementations to be chained together. ReadPreferenceServerSelector and PrimaryServerSelector now extend ChainingServerSelector and by default chain an instance of LatencyMinimizingServerSelector.  The latter fixes a bug where PrimaryServerSelector wasn't apply latency minimization (in the case of mongos load balancing).