Upload files to S3

For environments such as heroku where the filesystem is not persisted, it's nice to have the option to be able to store uploaded files elsewhere so they don't disappear when new code is pushed.