ARChive V1.7.4

- use the purge() function as part of the error handling during a volume duplication. if we recieve a code, 33, that indicates that the duplication chain is broken, we use purge to remove all traces of the now no good replicant, and tell archive to start the duplication over again.

- new event 'VOLUME DIFFERENTIAL DUPLICATE FAILED OUT-OF-SYNCH REPLICANT' to indicate the above condition. the retry will make a new event for the same transaction_id and volume_uuid.

- limit the volume duplication retries to 3. at that point, we'll give up.

- now using the purge() function when deleting the last snapshot for a given dr_binding_uuid from the database.

- adds "--translate" to 'roan events` to translate TENANT and TARGET UUIDs from the UUID to the objects human-name. This will add time (about 3 seconds per tenant ) to the completion time for the 'roan events' command as it collects the name bindings.

- fixes some logic after an error 33 is caught; now it will try any other snapshots found in the database in case there's a long-lived snapshot that could still be used as a base.