JAVA-757: Adding a new MongoException subclass called WriteConcernException, which DuplicateKey now extends. WriteConcernException takes the command result and passes toString() of it to MongoException, so the JSON representation of the entire document will appear in logs, instead of just the "err" field
JAVA-757: Changing CommandFailureException and WriteConcernException from static inner class to top-level.
JAVA-757: Made CommandFailureException public.  Added Javadoc
JAVA-691: Replacing authentication mechanism enum with String, so that it's extensible in the future
JAVA-691: Changed MONGO-CR to MONGODB-CR and authProtocol to authMechanism