Add MutableDocumentRevision and associated new Datastore methods:

    public DocumentRevision createDocumentFromRevision(MutableDocumentRevision rev) throws IOException;
    public DocumentRevision updateDocumentFromRevision(MutableDocumentRevision rev) throws ConflictException, IOException;
    public DocumentRevision deleteDocumentFromRevision(DocumentRevision rev) throws ConflictException;
    public List<DocumentRevision> deleteDocument(String id) throws ConflictException;

Also update documentation including README.md and doc/crud.md
Allow mutable documents to be returned from ConflictResolver:

* This required a refactor of the DocumentRevision class hierarchy:

  * DocumentRevision becomes minimal parent interface of BasicDocumentRevision and
    MutableDocumentRevision

  * Almost all existing usages of DocumentRevision change to BasicDocumentRevision

* Also ensure that attachments are correctly set for the new winning revision

Also fix transactionality of attachment handling:

New prepareAttachments method makes it easier to prepare attachments and split out prepared and
already-saved attachments, before starting a transaction and committing them to the database.