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