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.
Yeah, and a threadpool. It's just a little thing that annoyed me while I was testing. I realized that in our minds we distinguish between the UI cases of "1" and "many".