JAVA-1148: Fixed deadlock between DefaultServer and MultiServerCluster by removing unnecessary synchronization in DefaultServer
Remove outdated diagrams
JAVA-1123: Log using SLF4J API if available, otherwise fall back to JUL.
Updated all the former users of JUL logging to use the new Logger interface provided by the driver.
Use Logback when running tests.
Properly closing connection in operations
Properly closing resources in tests
JAVA-1152: For update command, only write multi or upsert field if the value is not the default.
JAVA-1154: Lower GridFS.DEFAULT_CHUNKSIZE from 256K to 255K so that chunks inserted into a collection using power-of-two allocator do not waste a lot of space
JAVA-1153: Added packages to Import-Package so that GSSAPI will work properly when the driver is running as an OSGI module.
Updating server version checks from 2.5.x dev versions to 2.6.
Beefing up error checking in SingleResultFuture
Avoid double-freeing of ByteBuf of the body.
Checking for null ResponseBuffers return value
JAVA-1155: A working implementation of the Stream interface based on Netty 4.0.  While it works, it shows a lot of problems with the Stream abstraction.  The fact that Netty has it's own ByteBuf class means we have to copy from Netty's ByteBuf to our own.  And the fact that reads are separated from writes in the Stream API means that there has to be a ping-pong between readAsync and the read handler that we give to Netty.
JAVA-1155: Created new implementation of org.bson.ByteBuf that wraps an io.netty.buffer.ByteBuf, and an implementation of BufferProvider which uses it.
JAVA-1155: NettyStream now works only with NettyByteBuf and is optimized for it.
JAVA-1155: StreamFactory and InternalStreamConnectionFactory now also determine the BufferProvider that must be used with Stream instances that are handed out.  This is so that
the Stream can be optimized for use with a particular implementation of ByteBuf.
JAVA-1155: Changed Stream interface so that it's the Stream's responsibility to allocate the ByteBuf returned from read or readAsync.  This allows for zero-copy reads with Netty.
JAVA-1155: Making Netty optional.  By default the NIO2 implementation of Stream will be used if async is enabled.  Set the system property org.mongodb.async.type to "netty" to enable Netty.
Now that we have a Netty Stream implementation that supports SSL and async, removing custom-built SSL NIO Stream implementation
Connection and Stream now extend BufferProvider, so no longer have to pass a BufferProvider through every level of abstraction.