Async Index Operations

Added an executeAsync to the CreateIndexes, DropIndexes and GetIndexes operations
Added executeAsync to User based operations

Added abstract base BaseUserOperation class
Updated CreateUserOperation
Updated DropUserOperation
Updated UpdateUserOperation
Updated UserExistsOperation
Added executeAsync to DropCollectionOperation
Added GetCollectionNamesOperation
Updated DropCollectionOperationSpecification
Added missing executeWrappedCommandProtocolAsync
Added executeAsync to FindAndRemoveOperation
Moved CollectionHelper out for reuse
Updated FindAndRemoveSpecification
Added executeAsync to FindAndReplaceOperation
Added executeAsync to FindAndUpdateOperation
Added executeAsync to GetDatabaseNamesOperation
Added executeAsync to GroupOperation
Updated executeAsync for InsertOperation
Added executeAsync for map reduce operations
Updated RemoveOperationSpecification to use helper and test async
Updated UpdateOperationSpecification to use helper and test async
Use the collection helper in the operation tests