Replaces full backup and HA copy store with a common implementation.

 o Solves an issue where COPY_STORE and FULL_BACKUP implemented their own
   mechanism for recovery, rather than allowing data sources to run regular
   recovery. This caused problems as the two mechanisms risk diverging.
 o Adds a LogWriter API to allow external tools to write arbitraty logs for
   arbitrary data sources.
 o Refactors a workaround in backup to ensure log files exist into its own
   class.
Merge pull request #2039 from jakewins/2.0-better-backup

Replaces full backup and HA copy store with a common implementation.