CSHARP-1065: Changed BsonDocument to postpone creating the indexes dictionary until there are enough elements to justify it.
CSHARP-1093: Introduced IChannel in order to allow ClusterableServer to intercept NotMasterExceptions.
CSHARP-1093: Replace the ExecuteProtocolAsync methods in IChannel with 7 more specific methods (delete, getMore, etc...).
CSHARP-1093: Replace ProtocolArgs classes with individual parameters and other code review changes.
CSHARP-1093: Rename RunCommandAsync to CommandAsync.