Support undefined in extended JSON

JAVA-1281
Change default heartbeatFrequency to 10 seconds

JAVA-1275
Added kill cursor to MongoAsnycQueryCursor

JAVA-1267
JAVA-1189: Allow commands to exceed the maximum document size by 16K, so that commands like findAndModify with a 16MB document will not throw.
Prefixing all BsonValue subclasses with "Bson".  For the existing classes like Code and ObjectId, they no longer extend BsonValue.  Instead, new classes with the "Bson" prefix were added.
Added BsonBinary subclass of BsonValue.  The existing Binary class no longer extends BsonValue.
BsonValue and all subclasses have been moved from org.bson.types to org.bson.  It makes sense, but also is necessary so that there are not two classes in the same package with the same name but different capitalization (the existing and unfortunately-named BSONTimestamp class and the new BsonTimestamp class).
Rename TimestampCodec to BsonTimestampCodec
Added back the existing Symbol class.
Javadoc for BsonNumber
BsonValue constructor back to package-protected
[Bug] DBObjectCodec always serialises the ID first, so any query document (i.e. document that isn't a storage document) that specifies it in a different position will fail, as it always gets moved into first place before encoding.  Wrote tests to prove the failing cases, and also move all the sort tests from DBCursorTest into DBCursorFunctionalSpecification (this is one of the areas affected).
Added com.mongodb.util support for $undefined

JAVA-1281
Update JSONSerializer Undefined class
Update Undefined to BsonUndefined
Made BaseCluster package-private
Removed unnecessary Codec<BsonDocument> from CommandRead/WriteOperation constructors
Added null checks to MongoOptions.toClientOptions

Default MongoOptions are now converted to valid MongoClientOptions
JAVA-1277
Fix reporting _id for Bulk API edge case for pre-2.6 servers

When upserted _id is not returned on custom _id's
Use AsyncSingleConnectionBinding to stop race condition