JAVA-691: Finished SASL support.
1. Added support for authProtocol and authSource in MongoClientURI
2. Added support for passing a credentials store to MongoClient containing all the credentials that are needed by this client
3. Re-implemented DB.authenticate using the credentials store and a new authenticate command in DBTCPConnector.  This removes the redundancy in DB and DBPort
4. Added support for negotiated authentication protocol specified by Protocol.STRONGEST
JAVA-691: Added a better test of DBPort's authentication code
JAVA-691: Added equals, hashCode and toString to MongoAuthority, and toString to MongoCredentialsStore
JAVA-728: Added better logging of Mongo constructor. Improved the toString methods of a bunch of classes to make the log look right.  Includes a log of the driver version as well.
JAVA-691: Fixed up toString of MongoCredentials so it doesn't print the address of the password char array
Rewrote MongoClientURI in a more functional style
JAVA-691: Added error checking for password
JAVA-691: MongoAuthority experiment
JAVA-691: Took MongoAuthority and MongoCredentialsStore private (or rather, package-protected).
JAVA-691: Change from STRONGEST to NEGOTIATE.  Removed SERVER-8100 workaround
JAVA-691: Renamed MongoCredentials to MongoCredential and moved inner Protocol enum to top level enum MongoAuthenticationProtocol
JAVA-673: Added support for ssl=true|false to connection string
Allow JSON commenting with ALLOW_COMMENTING feature
JAVA-743: JSONCallback now applies decoding hooks for all types
Merge remote-tracking branch 'upstream/master'
merge