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