Got rid of async connection, async session and async operations.  Add Protocol.executeAsync and implementations for all protocols.
Added AsyncOperation and made most implementations implement it.
Moved protocol package out of operation
Moved message classes into protocol.message
Move classes from org.mongodb.connection.impl to org.mongodb.connection
Moved ChainingServerSelection from connection to session
Renamed ChannelProviderSettings to ConnectionPoolSettings
Collapsed authentication helpers since the async authenticators are gone
Renaming Connection to InternalConnection
Renaming Channel to Connection
JAVA-845: Added support for use of a different service name for Kerberos Authentication via GSSAPI.
By default, the service name remains "mongodb", but can be altered via the addition of a mechanism property to the credential.
Moved async-related interfaces from org.mongodb.async to org.mongodb
Converted SocketSettings to use TimeUnit, to be consistent with all other Settings classes
Making com.mongodb.DBObjects package private
A few small logging fixes.
Properly returning a WriteResult from WriteProtocol and WriteOperation.
Properly throwing a MongoWriteException in all cases, not just when it's a duplicate key error.
Update README.md
Removed MongoOptions from clirr-exclude.yml since we're keeping it.
Added back constructor to CommandFailureException that was removed in error.
Added cluster event publishing framework, which includes events for:
1. cluster opened
2. cluster closed
3. cluster description changed
4. connection opened
5. connection closed
6. connection message sent
7. connection message received
8. connection added to pool
9. connection removed from pool
10. connection checked out of pool
11. connection checked in to pool
12. connection pool wait queue entered
13. connection pool wait queue exited
14. connection pool opened
15. connection pool closed

Currently all events are published except 4-7.
JAVA-805: Implemented connection events in the internal connection,  In order to send the event properly, needed a few extras like the cluster id and the request id of the sent message.
JAVA-805: Created JMX connection pool listener and removed explicit JMX support from PooledConnectionProvider
JAVA-805: Removed Cluster change listener support, as it's superseded by ClusterListener.
JAVA-805: Variable name changes, inlined variables, and formatting
JAVA-805: Ensure than the pool sends no more events after it's been closed.
Removed unnecessary final modifiers from interface method parameter
Cleaned up database dropping and mongo client closing by moving it all into fixtures