Switchable backends

For local dev (and unit tests) it'd be great if we could switch out the S3 backend for local filesystem, generic HTTP etc.

We'd have a Backend (name tbd) base class and do the subclass-tracking-and-require-folder dance from #20/[livewire](http://github.com/quarterto/Livewire/blob/master/src/matcher.ls).