Add a file storage abstraction.

This is for the work on backups.
minor nit: I'd prefer to see this as metadata_test.go and rawfile_test.go