CSHARP-913: Add "text" to the whitelist of commands that can be sent to a secondary.
Add an overload of BulkWriteOperation's Execute to not take a WriteConcern, should help consumer code readability.
CSHARP-797: Don't allow null as the WriteConcern passed to the Execute method.
CSHARP-869: stop caching ip addresses.
Spike of adding WriteRequests to the BulkWriteArgs.
Add an invariant to BulkWriteArgs to ensure Requests list is not null.
CSHARP-797: Add Requests to BulkWriteArgs.
CSHARP-797: Changed representation of empty Requests to Enumerable.Empty<WriteRequest>.
CSHARP-915: added MaxWriteBatchSize to IsMasterResult
CSHARP-915: added MaxWireBatchSize to server info.
CSHARP-915: changed MongoServerInstance.MaxWireBatchSize to MaxBatchCount.  Using MongoServerInstance.MaxBatchCount in MongoCollection.
corrected issue with not setting MaxBatchCount in all cases. Also added MongoDefaults.MaxBatchCount.
CSHARP-797: Throw an exception if a bulk operation is empty or Execute is called more than once.
CSHARP-797: Prohibit Find and Insert on a bulk write operation after Execute.
CSHARP-815: GeoNearPoint now *only* wraps alternate point representations for the GeoNear command. The implementation of a 2D point was moved to XYPoint. Replaced From methods in GeoNearPoint with implicit conversions.
Renamed GridFS helper method to WithReadPreferencePrimary.
Miscelaneous fixes.
Code review changes.
CSHARP-797: Make BulkWrite method internal

In 1.9.0-rc0 you had the choice of either using the BulkWrite method of MongoCollection to execute a bulk write operation, or you could choose the more verbose fluent bulk API if you wished.

In 1.9.0-rc1 we are making the BulkWrite method internal and requiring that you use the fluent bulk API instead.

To illustrate the difference between the two approaches, imagine you have an array of ids of documents you want to delete:

    var ids = new BsonValue[] { 1, 2, 3 };

Using the BulkWrite method you could use LINQ to transform the list of ids into a list of delete requests and pass them to the BulkWrite method:

    collection.BulkWrite(new BulkWriteArgs { Requests = ids.Select(id => (WriteRequest)new DeleteRequest(Query.EQ("_id", id))) });

Using the fluent bulk API you need to create an intermediate builder object and use it in a foreach loop to build up the multiple delete requests, and then call Execute on the intermediate builder object:

    var bulk = collection.InitializeOrderedBulkOperation();
    foreach (var id in ids)
    {
        bulk.Find(Query.EQ("_id", id)).RemoveOne();
    }
    bulk.Execute();

This change was made to make the .NET driver consistent with other drivers, where the fluent bulk API is the only way to create and execute batch writes.
CSHARP-797: Strengthen unit tests (work in progress).