Changed BSONReader and BSONWriter to interfaces, and added AbstractBSONReader and AbstractBSONWriter.  Refactored AbstractBSONReader to pull more behavior up, to make it easier to write subclasses.
Fixed Code.equals to not accept subclasses.
CodeWithScope no longer extends Code, and implements all standard methods
Added remaining as<BSON type> methods to BsonValue
Created BsonDocumentReader class that supports a BsonDocument as the source of a BSONReader.
BsonDocumentWrapper checkstyle
BsonDocumentReader checkstyle
CommandHelper checkstyle
ServerStateNotifier checkstyle
BsonDocumentWrapperHelper checkstyle
MapReduceHelper checkstyle
MapReduceHelper checkstyle
OperationHelper checkstyle
CollectionHelper codenarc
DatabaseTestCase codenarc
Improved extensibility of Bson-related codecs
All driver tests passing with BsonDocument-based Operation and Protocol implementations