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