CSHARP-875: Removed all code from high level driver that now belongs in Core and temporarily replaced it with NotImplementedExceptions.
Got enough of the legacy API working on top of Core for the test configuration to startup and for the first test (TestMetaText) to pass.
Ported the classes that emulate CRUD opcodes using write commands from 1.x to 2.x.
Removed everything but Version from MongoServerBuildInfo.
Move IsWritable to an extension method on ServerType in Core.
Let legacy API methods that are command based continue to use the high level RunCommandAs (at least for now).
Implemented MongoCursor. All MongoDatabaseTests are now passing.
All MongoServer tests now pass.
Removed RefreshStateAsSoonAsPossible and VerifyState.
Got a lot of MongoCollectionTests passing. Still a few more to go.
Added MaxBatchCount, MaxDocumentSize, MaxMessageSize and MaxWireDocumentSize to ServerDescription. Refactored ServerDescription to use new Optional<T> class and single With method.
Modified InsertBatch to correctly handle multiple batches when w=0 and continueOnError=false. That required postponing until the very last minute the decision whether to send the getLastErrorMessage, which was done by introducing an optional ShouldBeSent delegate.
Got another MongoCollection test to pass (related to MongoDuplicateKeyException). Consolidated the logic in the ExceptionMapper in one Map method and have the other Map method call it.
Implement Limit in Cursor.
Reverted ExceptionMapper Map method back into two methods and made sure to call one or the other method in the same way we did in 1.x in order to get the same exceptions thrown in 2.x.
Changed result type of Execute methods for write WireProtocol and OpcodeOperation classes from BsonDocument to WriteConcernResult because all callers were immediately converting the BsonDocument to a WriteConcernResult.
Implemented MongoCollection Update on top of Core and Update tests are now passing.
Implemented MongoCollection ParallelScanAs method on top of Core.
Fixed failing MongoCollection Remove test.
Introduced MessageEncoderSettings as a way for the high level drivers to pass settings down to the message encoders (such as whether to use a lenient UTF8 encoding, required to get the last 2 MongoCollection tests to pass). Also refactored how MessageEncoderFactory works a bit given the new MessageEncoderSettings. All unit tests in all projects are currently passing.