Backups storage

Add a backups archive storage abstraction and do a little cleanup.
It's because the fields are private.  If you can initialize the private fields of a struct from outside the package then I'll just remove NewOriginFull entirely.