Pojo Decoding works for simple cases (tests document which ones). ClassModel introduced to cache results of reflection calls, bringing encoding and decoding performance to levels similar to that of DocumentCodec.
Collapsed MongoAsynchronousSocketChannelGateway into DefaultMongoAsyncConnection
Fixed design flaw with MongoAsyncConnection.  Formerly there was complicated logic over who is responsible for returning the connecting to the pool.  Now it's very clear.  The only one who does it is ConnectionClosingSingleResultCallback. Now MongoAsyncConnection doesn't have to track any state about whether it's being used.  It's not it's responsibility any more.  As a consequence, DefaultMongoAsyncConnection doesn't have to be aware of the connection pool.  That responsibility can be moved to a wrapped MongoAsyncConnection that is managed by the DefaultMongoAsyncConnectionPool.

Along the same lines, also created a separate implementation of MongoAsyncConnection that is just responsible for authentication.  It wraps an underlying connection and calls the underlying connection after completing authentication.
Removed MongoConnectionManager.releaseConnection method.  Clients can just using MongoConnection.close instead.  Updated all the clients.
To allow this, added a wrapping connection class in MonotonicallyConsistentMongoServerBinding that allows close to be delayed on the cached connections.
Removed errant AutoCloseable.  That's Java 7 only!  Thank you Jenkins.
Suppressing FindBugs errors that not bugs in this case.
Fixed a few tests that fail with SSL or auth enabled by adding connection factory support to Fixtures and using it where necessary.
Allowed for null async connection pool, which can happen with Java 6
Moved call to super.close() out of conditional
Fixed ridiculous checkstyle warning about a private class not being final.
Clarified meaning of test by removing assertion that we never even get to.
Added MongoConnection.receiveMessage to that we can support exhaust flag on cursors.
Added MongoServerBinding.isClosed() method, for consistency
Added helper implementations of MongoAsyncConnection and MongoSyncConnection to support delayed connection closing
JAVA-808: Added support for the exhaust flag on queries.  This was a bit tricky, but it handles all the edge cases, including making sure that we exhaust the responses when the cursor is closed, even if the user of the cursor did not.
Added receiveMessage to MongoAsyncConnection
Calling the wrong method...
Added constructor that initializes the future.
JAVA-808: Support Exhaust flag for asynchronous iteration.  This includes a refactoring of logic out of MongoCollectionStream into a separate MongoAsyncQueryCursor class.
MongoConnectionIsMasterExecutor now depends on a connection factory instead of a server binding.  This way it doesn't have a connection pool, which is a bit overkill for this.
IsMasterCommandResult no longer has-a CommandResult instead of is-a CommandResult
Fixed bug in SimplePool due to auto-unboxing producing an NPE.