CSHARP-798: Prototype public API of supporting Aggregate command with cursors.
CSHARP-798: Added AllowDiskUsage to MongoAggregateOptions.
CSHARP-800: Add support for aggregate command with $out.
CSHARP-798: Added new AggregateQuery method that behaves more like a query and delays sending the command to the server until the results are enumerated.
CSHARP-798. Initial implementation finished and all unit tests pass, including new unit tests for aggregate with a cursor and with $out.
CSHARP-798: Execute AggregateQuery immediately if $out is used. Remove FirstBatch property from AggregateResult and overload ResultDocuments to also hold the first batch when using a cursor. Add new RunAggregateCommand helper method to MongoCollection and remove overload of Aggregate command that takes an options parameter (so if you want to use a cursor, which requires options, you have to use the new AggregateQuery method).
CSHARP-798: Give the user control over both the FirstBatchSize and the subsequent BatchSize when using AggregateQuery with a cursor. A FirstBatchSize of 0 instructs the server to just set up the cursor and return immediately with an empty first batch. FirstBatchSize defaults to BatchSize if not specified. If neither is specified the server picks the batch size.
CSHARP-798: Removing support for FirstBatchSize in response to code review comments. Leaving BatchSize nullable to avoid using a magic number.
CSHARP-747: added support for SASL-PLAIN which is supported in server 2.6.  SASL-PLAIN is also used for LDAP support when targeting the  database.
CSHARP-790 and CSHARP-815: Add support for MaxTime and new GeoNear options.
CSHARP-796. Account for replica set config version being sent in IsMaster of 2.5.x+
CSHARP-790: Changed MapReduce to use new MapReduceArgs parameter.
CSHARP-796 - Fix potential race condition in member adding.
* Added test for replica set
* Fixed replica set name test to work for all counts
* Fixed TestArbiter
* Fixed TestPassives
CSHARP-790: Added support for MaxTime to FindOneAs and use FailPoints to test MaxTime.
CSHARP-790: Only use FailPoint to test MaxTime if server we are connected to supports it.
CSHARP-790: Fix issue with default ReadPreference for FindOne.
CSHARP-790: Renamed private field in FailPoint class.
Added FeatureTable to make it easier to test whether a feature is supported. This also competely isolates code that needs to know if a feature is supported from knowing how to detect if a feature is supported.
Moved feature detection logic out of FeatureTableCreator and into a family of FeatureDetector classes (two for now, one for version dependent features and another for features that depend on a server parameter being set).
Added FeatureDetector and implemented it in terms of IFeatureDependency implementations: ServerParameterDependency, ServerVersionDependency and WireVersionDependency.