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
Checking the return value of CountDownLatch.await in tests.
[JAVA-1390] Phase 1: cleaning up the current build. Tests have been moved around and dependencies altered, all with the intention of making all modules follow the same pattern so the build file is much simpler and smaller.