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