Exposed Command encoder on constructor of CommandOperation.  Tidied up all the places the document codec was used for these calls to clarify the difference between the command codec and the codec for the documents in the collection.
Tidied up BaseWriteCommandMessage
Changed GetIndexesOperation to use the protocol directly.
Update README.md
Validation for find and update implemented; specific validation for find and replace, the document codec will correctly fail a replacement document with update operators
Update README.md
Updated test to consistently use "magic" to create DBObjects
Simplified FindAndUpdate validation so that it doesn't require a separate validator.
Moved generation of Find and Modify command documents into the operation class from the bean.
Created GetIndexesOperationSpecification, covering basic use cases of the operation.
Fixed test
Turned off findbugs warnings about exposing mutable objects.  It's very tedious for Date.