Rebased on master.
CSHARP-797: Added maxDocumentSize parameter to MongoInsertMessage.
CSHARP-797: Added maxDocumentSize to more classes. Removed GetNodeAdjustedReader/WriterSettings.
CSHARP-797: Replaced ContinueOnError with Ordered.
CSHARP-797: Removed parts of bulk write results processing that are no longer valid in the most recent version of the spec.
CSHARP-797: Unit tests passing against 2.5.4 nightly.
CSHARP-797: Fixed warnings after rebasing on master.
CSHARP-797: Parameterized RequestEnumerator to make it reusable in the write command based operations.
CSHARP-797: Basic structure of InsertCommandOperation that can split large bulk inserts into batches.
CSHARP-797: Refactored Message classes so callers can choose to write the header and the body separately. The bulk write commands need to take control of writing the body themselves so that they split the bulk requests into batches.
CSHARP-797: Abstracted out the strategy of batching to BatchIterator class.
CSHARP-797: New version of InsertCommandOperation that uses BatchIterator.
CSHARP-797: Deleted RequestEnumerator because it is no longer used.
CSHARP-797: Changed BulkWriteOperation to use BatchIterator to find runs of requests of the same type. While it now materializes the runs, the length of the runs is bounded by MaxBatchCount.
CSHARP-797: Unified implementations of write command operations as subclasses of new WriteCommandOperation class.
CSHARP-797: Minor refactoring.
CSHARP-797: Initial implementation of fluent bulk API.
CSHARP-797: Simplify fluent bulk API by removing some features that aren't strictly necessary.
CSHARP-797: When removing the overflow request for a write command strip off the array index. When writing the overflow to the next message use WriteRawBsonDocument to write it.
CSHARP-797: Handle MaxCommandSize and MaxDocumentSize in more places.