First cut as support for session-like behavior, initially to support DB.requestStart/requestDone in driver-compat
Removed unused getSession method from MongoConnector.  It may come back, but for now it's gone.
Removed no-longer-used SingleServerMongoConnector.  It's been superseded by SingleServerConnectorManager
Simplified connection management so that the responsibility of releasing a poolable connector is delegate to the poolable connection manager.
Removed unused MongoSessionFactory
Closing the connector after removing it from the thread local, so that even if it throws an exception the connector is un-pinned from the thread
Implemented MongoClient.withConnection methods
Added ReplicaSet Junit Category to use for tests of DB.requestStart/requestDone.
Excluding that category when not testing against a replica set.
Added test for interrupting tailable cursor iteration.
This looks like a big change, but most is automated refactoring.  Added MongoSession interface, which MongoConnector now extends.  MongoConnector now has a getSession method that returns a MongoSession.  MongoPoolableConnector no longer extends MongoConnector, instead extending MongoSyncConnector and MongoAsyncConnector.  Which means that the single channel implementations don't have to implement getSession, which doesn't make sense.  And DelegatingMongoConnector and MonotonicallyConsistentServerConnectorManager can be non-public like they should.
Renamed a bunch of classes to make intent clearer.
Renamed ServerConnectorManager to MongoServerBinding.  Classes implementing the interface changed names accordingly.