Merge pull request #5 from trnl/3.0.x

Updated 'Bson' to 'BSON' in all files
More cleanup of bson module: moved all the async and channel aware stuff in OutputBuffer into ChannelAwareOutputBuffer in driver module
Renamed ByteBufferInputBuffer to BasicInputBuffer
Rolled back a regression with rename of maxBsonObjectSize field in isMaster to maxBSONObjectSize
Creating friendly Sort helper
Updated query test for new bson positions
Removing MongoURI, MongoOptions, and all public Mongo constructors.  Note that this change breaks binary compatibility.
First pass at porting the QueryBuilder
Suppress warnings
Added decode(String str)
Implemented JSONReader. Code is a bit dirty now. Next step is refactoring.
Refactored JSONScanner and JSONReader a bit and added documentation.
JAVA-254: DBCollection.setInternalClass works with arrays.  The fix is in DBObjectSerializer.
Added SSL support through a bit of trickery.  Instead of MongoChannel, there is now an abstract class MongoGateway with two concrete subclasses: MongoSocketChannelGateway, which uses a SocketChannel, and MongoSocketChannelGateway, which uses a Socket.  If SSL is enabled, we force use of the latter, so that we can use SSLSocketFactory.  Reason to do this:  by using Socket instead of SocketChannel, we don't have to use SSLEngine directly, with is a PITA.  For the same reason, we don't support async with SSL.

To configure SSL, there is a new boolean property in MongoClientOptions: SSLEnabled.  Additionally, there is a new boolean property that allows you to disable async, even when running on a supported Java version.

There are two system properties as well that will let us test the different paths more easily:

org.mongodb.asyncDisabled: lets you disable async without having to mess with options.
org.mongodb.useSocket: lets you test MongoSocketGateway even without enabling SSL
Made BSONReader.State to be public
Suppressed checkstyle warnings on a JSONReader and JSONScanner for a while.
Added @Override to implementations of Map interface methods.  Added method get(Object key, Class<T>).  Added Javadoc.  Fixed parameter names.
Added @since javadoc annotation
Added state checking to JSONWriter
Added BSONWriter.Context and made JSONWriter.Context & BSONBinaryWriter.Context to extend it.