Rationalized the Pool and BufferPool interfaces.
Added support to PowerOfTwoByteBufferPool for getting buffers bigger than the max pooled size.
Dealt with race conditions between run and close methods, to avoid spurious log messages.
Pushed Server.closed/isClosed into ClusterableServer
FindBugs warning fix.  Added !isClosed assertions in DefaultServer.
Made AsyncSession.getConnection methods return MongoFuture<AsyncConnection>, so that they can be non-blocking.  All the async operations now use this future in a non-blocking fashion (by registering a callback) and return immediately. The non-blocking behavior is implemented using an Executor to execute a simple Runnable that gets a server/connection and initializes the future with it.