CORE-4892 Implement index-data-object task

Dewey can now listen to a rabbitmq message queue and respond to a data-object.add message.
CORE-4892 Implement index-data-object task pt 2

Dewey can now listen to a rabbitmq message queue and respond to a data-object.cp message.
CORE-4892 Implement index-data-object task pt 3

As part of the index-data-object task the data object's parent collection's index entry is updated.
CORE-4892 Implement index-collection

When dewey receives an index-collection message, it indexes the collection, and if the collection's parent collection is in the index, it updates the modify time for the parent's index entry.
CORE-4892 factored out common logic
CORE-4892 handles collection.rm message
CORE-4892 no longer updates parent mod time

It appears that iRODS never updates a folder's modification time, so dewey shouldn't do that either.
CORE-4892 index-collection now works
CORE-4892 rm-collection now works
CORE-4892 (re)index-data-object now work
CORE-4892 properly short-circuited some irods calls

format-collection-doc and format-data-object-doc no longer use default values for the optional parameters because they don't short-circuit.
CORE-4892 now handles data-object.mod messages
CORE-4892 now handles data-object.rm messages
CORE-4892 collection.mv now moves all members
CORE-4892 handles data-object.acl.mod messages
CORE-4892 update-parent-modify-time fix

When the parent collection is not in the index, it is now indexed.
CORE-4892 collection.acl.mod is now handled
CORE-4892 major refactoring

All of the document building code that can use either an iRODS path or an iRODS listing entry is now implemented using multimethods.