BackupAdapter

This PR introduces a BackupAdapter which simply mirrors create, update, and delete operations from a source adapter to a backup adapter.  This adapter can serve as a migration tool when a user wants to move from one source to another, local files to S3 for example.
The ! should have spaces around it.