Added AwaitingWriteOperationIterable to handle race condition when asynchronously aggregating or reducing to a collection

 JAVA-1571
Added aggregateToCollection and mapReduceToCollection methods to async MongoCollection API to support
users who just want to know when the operation completed but do not want to immediately iterate the results.

 JAVA-1571
ListIndexOperation now returns a cursor instead of a list

 JAVA-1588
Replaced ListCollectionNamesOperation with ListCollectionsOperation that returns a cursor

 JAVA-1588
Removed unused requestId property from QueryResult