A "content store" abstraction.

This is where the file content is stored, away from the repo.

Also two implementations of the abstraction: a local one for testing
and a remote one for production use.
Other than spelling it out in the docstring not really. If you wanted to be heavy handed you could give a writable file object rather than a path