[Performance] Guided by the profiler, located all places where String.format is used to see if the call needs to be cached, or wrapped inside a conditional; wrapped all calls to logger.warn/info/debug inside a conditional. Performance testing shows these changes do improve the performance of create, read, update and delete methods.
Find and Modify now use returnOriginal as per spec

JAVA-1523
[Test improvements] While performance testing findOne, I discovered some functional tests that would be much more readable in Spock than JUnit, so I've ported them from DBCollectionOldTest to DBCollectionFunctionalSpecification
Merge pull request #278 from trishagee/perf

Ensure String.format is not on the critical path for any operations.
Added toString to BsonBinary
DBObjectCodec now gets decoders for BSON binary values from the codec registry, based on peeking the subtype.

 JAVA-1507
Find and Modify now use returnOriginal as per spec 2/2

JAVA-1523
Added Javadoc for all the lazy BSON object types.

  JAVA-1428
Added Javadoc for all the lazy BSON object types.

  JAVA-1428
Removed LazyWriteableDBObject and related classes.  These classes are poorly designed and violate the implicit contract of LazyBSONObject, which
allows the contents of the object to be piped to an output stream.  Doing so with a LazyWriteableDBObject instance will ignore any modifications
made to that instance.

  JAVA-1537
Excluded lazy writeable classes from clirr report

 JAVA-1536
Removed DBCollection.apply and DBCollection.doapply, as there are no longer even called
and have been deprecated in 2.13.

 JAVA-1538
Changed ByteBuf interface to support reference counting instead of Closeable.

  JAVA-1451
Properly use default options when specifying MongoCollectionOptions in MongoDatabase

  JAVA-1524
Ensure client / database / collection use default options with any set options

JAVA-1524
Added README.md to async and rx
Merge pull request #279 from trishagee/test-improvements

Moving some old tests to Spock