Improved test names
Made test class abstract
1. Renamed SimplePool to ConcurrentPool
2. Removed need to subclass ConcurrentPool by adding a Factory that's passed in
the constructor
3. Pool throws an exception on timeout instead of returning null
4. Removed tracking of items that are checked out of the pool.  It's not the
responsibility of clients to ensure that what goes out is what goes in
5. Replaced ArrayList with ConcurrentLinkedDeque to track pool members
6. Because of 3/4, removed synchronized blocks in the pool
7. Added UsageTrackingConnection, which keeps track of open and last used times,
as well as the "generation" of the connection  Instances of this are what go
into the pool.
8. Added shouldDiscard method to DefaultConnectionProvider, which checks these
times against the current time, and returns true if the connection is stale
based on configurable timeouts in DefaultConnectionProviderSettings.
9. shouldDiscard also returns true if the connection's generation is older than
the current one.  This is useful as a way to clear the pool of stale connections
after, say, a server restart, without needing to lock the pool.
10.  ConcurrentPool is now LIFO instead of FIFO
Removed Connection.open.  Implementations should open the connection in the constructor.
test(driver-compat) add tests from JAVA-794
MongoClientImpl now package-private
ErrorHandling class now package-private
fix(driver-compat) make ErrorOldTest.testPrevError to call requestDone() on exit
fix(driver) add delay before starting WaitQueueFullTrackingConnectionGetter in DefaultConnectionProviderTest.shouldThrowOnWaitQueueFull
Added support for multiple callback registrations on SingleResultFuture
Added MongoClientURI.getCredentials in driver-compat
Excluding codenarc rule ExplicitCallToCompareToMethod, because I want to be explicit about it when I'm testing a compareTo method
Added ServerVersion to ServerDescription as version property, to support feature testing based on version.
fix(driver) make DefaultConnectionProviderTest.shouldThrowOnWaitQueueFull less racy
Turn ON fail on findbugs errors. Again.
JAVA-870: Added SSLEnabled property to MongoClientOptions
Removed JavaDoc from non-public class ConcurrentPool
first iteration on the new fluent api spec.  It supports the CRUD operations,
but still missing is:
1. many of the query special fields
2. batch update/remove
3. aggregation
Renamed *Stream classes to *View
Fixed up names of query option methods on MongoView