Refactoring to support different stores
We want to be able to push to different backing stores, NFS, samba shares, ftp etc. This change roughs in the interface necessary to get the job done.