JAVA-994, JAVA-996, JAVA-998, JAVA-1000, JAVA-1001: Ported Cluster implementation from 3.0.x branch and replaced ConnectionStatus/ReplicaSetStatus/MongosStatus/DynamicConnectionStatus with it.
JAVA-981: Added support to DBPort to execute an arbitrary Operation, so that it can work with clients that don't use OutMessage.  Added BSONBinaryWriter and tests from 3.0.x branch.  Added support in BSONBinaryWriter to encode a document using a DBEncoder.  Added support for insert, update, and delete command for use when writing to a 2.6 server.
Defaulting to ACKNOWLEDGED write concern for all tests.
Fixed all the tests that were assuming a default write concern of UNACKNOWLEDGED.
Split a test for two completely different things into separate tests.
Properly configuring the cluster with the correct settings for the heartbeat checks of each server.
Properly configuring the server selector with the acceptable latency from the system property
JAVA-974: Add support for creating, updating, finding, and removing a user via the new commands being introduced in 2.6. The choice to use the new commands or the currently supported manipulation of the system.users collection is based on the server version.
Re-implementing mongos sticky HA on top of new Cluster infrastructure
Making tests robust when run against a sharded cluster.
Added Gradle wrapper support, idea configuration from gradle, and checkstyle.
Read preference should not be forced to primary for commands unless this is a replica set connection.