JAVA-1286: Added EncoderContext class and passing an instance of it to Encoder.encode()
Added DecoderContext class and passing an insance of it to Decoder.decode().
Added EncoderContext.encodingCollectibleDocument property, which document codecs use to determine whether to encode the _id field first.
JAVA-1202: Dedicate a single thread scheduled executor to each server being monitored
JAVA-1217: Instead of increasing the retry frequency for an unreachable server, always use the same frequency, and force an attempt to connect only when there is a failure of the server selector to find a matching server.
JAVA-1284: MongoTimeoutException should include the total time waited before timing out, not just the last time through the loop
JAVA-1285: When server selection fails to find a match, await only for connectRetryFrequency, instead of maxWaitTime, so that attempts to re-connect to each server happen more frequently.
JAVA-1221: Avoid possible NPEs in JMXConnectionPoolListener.
JAVA-1216: Removed special handling of replica set version. We ignore non-primary's host lists if there is a primary that we are connected to. We also never remove servers based on a non-primary's host list
JAVA-1207: Fixed log message to correctly convert nanos to millis. Also changed usage of the phrase "pingTime" to "roundTripTime", so it is clear the driver is not actually using the ping protocol or the MongoDB ping command
JAVA-1287: WriteResult.isUpdateExisting was already set correctly, but simplified the code and added tests to match the 2.12.x branch
Updated bulk write Javadoc to match the 2.12 release
JAVA-1252: Invalidate connection pool if server monitor encounters a connection error, or server is invalidated