Gives some private inner classes better names.

 JAVA-1427
Converting document to string if no codec is a bad idea

The document could be either very very large or not define a proper toString method.
Fix codenarc in groovy test
Updating the Async API to mirror the sync API

JAVA-1325

Conflicts:
	driver/src/main/com/mongodb/FindFluentImpl.java
Updating the rxJava API to mirror the async API

JAVA-1325
Fix observable helper
Added BatchCursor interface and implementation to expose batches directly in core and using it in all operations

  JAVA-1546
Moved MongoCursor from core to driver and into com.mongodb.client
Created AsyncBatchCursor and implementation, while allows users of core to operate on query batches directly
rather than through an abstraction which hides the existence of batches.  Among other things, this will allow
users of core to implement back pressure.

 JAVA-1546
Relaxing test to handle change in error message from MongoDB 2.8
When explaining a find operation, set the limit to the absolute value of the limit * -1

 JAVA-1559
Fixed race conditions in sync and async batch cursor tests
Added unit test for explaining a find operation

 JAVA-1559
Add AsyncBatchCursor to operations

JAVA-1546
Support custom return types for executeCommand

JAVA-1561
Support custom return types for getIndexes

JAVA-1562
Fix OperationIterable looping logic

JAVA-1546
Cleaner fix for OperationIterable looping logic

JAVA-1546
Upping the timeout for server selection to 10 seconds in the tests
Handling case where the first batch of a tailable cursor is empty but still provides a cursorId

 JAVA-1546