WIP Allow file upload backends other than S3

**Context**: We do not use Amazon S3 for file storage, but we would like to support file uploads in open assessment.

**Proposed solution**: the goal of this pull request is to get the conversation started on this topic, which is potentially quite complex. We'd like to develop something useful for everyone. There are multiple ways to about this:

1. Develop a file upload backend that is specific to edx-ora2. This is what we started to do in this specific pull request by abstracting away the logic behind the file upload backend.

2. Develop an external storage backend that could be included as an edx-ora2 dependency. 

3. Rely upon [django-storages](https://django-storages.readthedocs.org/en/latest/) instead of reinventing the wheel. django-storages is currently listed among the dependencies of OpenEdx, but I'm not quite sure where Edx wants to go with this: the django-storages project has [little activity](http://code.larlet.fr/django-storages/commits/all) and the documentation is all but nonexistent. Are there other, similar Django apps for file storage?

4. Develop a file upload backend for use throughout OpenEdx: file upload is a big topic inside OpenEdx, so it would not be unreasonable to develop a backend that would be compatible with the rest of the OpenEdx code. However, that would probably require a lot of work.

Our suggestion is to get started with (1), then move on to (2) and perhaps later to (4). If the OpenEdx community is on board with this, then we can continue working on this pull request.