WIP Allow file upload backends other than S3

We would like to support open assessment file uploads for open-edx
installs without access to S3. To that end, we propose to abstract away
some of the logic behind the file upload backends so that other backends
may be implemented.

Note that this is a work in progress and should NOT be merged straight
away.