Added RootCodecRegistry.withCodec(Codec<T>) method to make it easier to create a copy of an existing registry with one additional codec

  JAVA-1445
Support sharded DuplicateKey exceptions

JAVA-1103
Renamed ServerMonitor to DefaultServerMonitor

In preparation for adding a ServerMonitor interface
Invalidate pool and monitor if authentication fails

JAVA-1463
InternalStreamConnection refactoring

No longer need an InternalStreamPipeline as initializing a connection
is no longer lazy.

JAVA-1463 JAVA-1293
Ensuring slaveOK is passed to QueryProtocol versions of operations

JAVA-1485
Fix race in ServerMonitor test
Renamed org.mongodb.WriteResult to org.mongodb.WriteConcernResult

 JAVA-1395
Move org.mongodb.WriteConcernResult to com.mongodb.WriteConcernResult

 JAVA-1395
Changed property type in WriteConcernException from WriteResult to WriteConcernResult

 JAVA-1395
Moved WriteResult from driver-core to driver

 JAVA-1395
Better fix for the race condition in DefaultServerMonitorSpecification
Deleted redundant GetCollectionNamesOperation class
Fixed bug in DefaultServerMonitor where the monitor Runnable was being created twice.
Codenarc violation
Handle "not master" / "recovering" errors from writes

JAVA-1274