JAVA-1546

Operations that return cursors should not abstract batches of results.

* Added BatchCursor (not sure about this name) to operation package, a synchronous API that directly exposes the existence of batches of query results.
* All operations that used to return MongoCursor now return BatchCursor
* MongoCursor moved to driver:com.mongodb.client
* New class MongoBatchCursorAdapter implements MongoCursor on top of BatchCursor API
As per async - I think this could do with a little more documentation - mainly explaining why we do it this way.