Fix for BasicBSONObject equals method

very large Long values were being converted to doubles for comparison
and incorrectly considered equals
Merge pull request #133 from foursquare/bsonequals

JAVA-905: BasicBSONObject.equals doesn't handle Number values correctly
JAVA-851: disable check for upper bound on chunkSize in GridFS
JAVA-853: Properly handling nested calls to DB.requestStart/requestDone by keeping tracking of the nesting depth, and only removing the thread local when the depth returns to 0.
JAVA-812: Only set $readPreference on a query if the read preference is not primary.
This lets the slaveOK bit have precedence if it's set.
JAVA-790: Change index options from {unique: 1} to {unique : true}
JAVA-901: add protected getBytes() as a replacement for _input field access
JAVA-839: deprecated methods should fallback to toByteArray()

This is done because of differences in byte order with in ObjectId between 2.x and 3.x versions
JAVA-839: bring new ObjectId API and implement a the old one on top of it