Ported Database and Collection specifications
Add support for unacknowledged updates and deletes

JAVA-1434
Made WriteConcernResult an abstract class

JAVA-1563
Updated BulkWriteResult to follow the past tense convention in core for acknowledged operations.
Fix missing line after import codenarc
Fixing razy test in BulkWriteOperationSpecification
Calculate round trip time as an exponentially weighted moving average, using a value of 0.2 for the weighting factor.
A weighting factor of 0.2 was chosen to put about 85% of the weight of the average RTT on the 9 most recent observations.

 JAVA-1567
Resetting the moving average only when the state goes back to Connecting.
Changed contract of ClusterDescription.getByServerAddress to only report an ok server.
Added server selection timeout to cluster settings.
Added maxWaitQueueSize property to ClusterSettings

  JAVA-1200
Added auto-generated equals/hashCode methods for all the core settings classes
Setting maxWaitQueueSize property correctly from MongoClientOptions for both ConnectionPoolSettings and ClusterSettings

 JAVA-1200
Added selectServerAsync method to Cluster for efficient asynchronous server selection.
The BaseCluster implementation maintains a concurrent deque of pending server selection request
and a single background thread to iterate through them whenever a new cluster description has been published.
It supports logging, timeouts and a max wait queue size

   JAVA-1200
Temporarily ignoring test until SERVER-16274 is resolved, as this test causes a crash in a 2.8 replica set
Cluster now extends Closeable
MongoClient now extends Closeable

 JAVA-1501
Using waitQueueSize atomic integer properly in BaseCluster
Added Server.getConnectionAsync and supporting implementation in DefaultServer and DefaultConnectionPool
The connection pool implements it with a single threaded executor service and handles wait queue size and timeout enforcement

  JAVA-1200
DefaultConnectionPool.getAsync now opens each connection asynchronously.

 JAVA-1200