JAVA-1246: Removed duplicates from hosts list parameter to ClusterSettings.Builder.hosts().  Also, throw if hosts list is null or empty.
JAVA-1252: Invalidate connection pool if server monitor encounters a connection error
Added support for reading $numberLong in extended JSON

JAVA-1272
Fix reporting _id for Bulk API edge case for pre-2.6 servers

When upserted _id is not returned on custom _id's

JAVA-1263
JAVA-1284: MongoTimeoutException should include the total time waited before timing out, not just the last time through the loop
JAVA-1285: When waiting for the cluster description, force a connection attempt each 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-1285: Take two
JAVA-1285: Await the minimum of the connect retry frequency and the remaining wait time
JAVA-1285: formatting
JAVA-1287: Set WriteResult.updateOfExisting based only on BulkWriteResult.matchedCount
Merge branch 'master' into 2.12.x
Ensure collection.aggregate throws on error

JAVA-1253
Fix race condition in test by using a request
Ensure helpers call throwOnError();

JAVA-1254
JAVA-1295: Using difference between the current and previous exception in ServerMonitor to determine whether to log a state change.
Fixed BSONTest.testUTF8 to ignore surrogate characters, which are not valid UTF-8 characters, so that the test passes on Java 8.
Fixed BSONTest.testUTF8 so that it compiles with Java 6.
Merge remote-tracking branch 'remotes/upstream/2.12.x' into mongolab-java-driver-2.12.x

Conflicts:
	src/main/com/mongodb/BaseCluster.java