CSHARP-981: Introduce INameDecoder interface and use it to move Trie based name decoding out of BsonBinaryReader.
CSHARP-875: Gutted all code that should be in core and left just the legacy public API with stubs that throw NotImplementedException. Follow up commits will begin to reimplement the legacy API on top of the new core.
CSHARP-875: Added the new MongoDB.Driver.Core project.
CSHARP-875: Ported over the experimental async driver using v2 naming conventions.
CSHARP-875: Initial implementation of ClusterRegistry that allows MongoClient and MongoServer instances to share cluster instances.
CSHARP-875: Removed obsolete CollectionName from MongoCollectionSettings and DatabaseName from MongoDatabaseSettings and any code that referenced them.
CSHARP-875: Added binding to MongoServer, MongoDatabase and MongoCollection.
CSHARP-875: Reimplemented MongoCollection.Count on top of the Core.
CSHARP-875: Added private ClusterKey class because ClusterSettings is not a proper dictionary key.
CSHARP-875: Removed Binding from MongoServer, MongoDatabase and MongoCollection (because they aren't IDisposable they can't own any disposable resources). Implemented RequestStart, which required adding Handles and Fork to bindings. Removed inconsistent terminology (e.g. node, filter). Added more sync extension methods.
CSHARP-875: Neglected to make ServerConnectionSource a handle in the previous commit.
CSHARP-875: Added Fork to IReadWriteBinding.
CSHARP-875: Implemented RunCommand in MongoDatabase. Changed command operations to return any TCommandResult. Used Craig's trick of using an intermediate RawBsonDocument to check the ok field before deserializing to a TCommandResult.
CSHARP-875: Implemented MongoCollection Distinct on top of Core.
CSHARP-875: Gave up the idea of having multiple connection pools for different kinds of operations (slow, fast, etc...).