Separated aggregate explain functionality into its own Operation implementation.
Refactored selectors so that ChainingServerSelector is no longer needed.
Cleaning up other selectors as well
Refactoring boilerplate code out of Operation implementations and into OperationHelper
Added support for $readPreference on command documents
Adding CompositeServerSelector
Moving ServerSelector and implementation to org.mongodb.selectors
Changed name of ServerSelector choose method to select
Added ServerSelector to ClusterSettings, to be applied as the final selector in calls to Cluster.selectServer
Added MongosHAServerSelector and fixed LatencyMinimizingServerSelector so that it only applies when ConnectionMode is MULTIPLE
Using ClusterSettings serverSelector in Mongo to set default selectors
Making InlineMongoCursor package private
Move handling of query document creation to QueryOperation.
Removed AggregationCursor in favor of MongoQueryCursor which can now handle the aggregation use case.