Numerous improvements and refactorings

I've made several significant changes:

1. I've added support for serving files from the local file system. When a file is uploaded, a database record is still created but the file is copied to the local file system where it is served from. Its hash is recorded, in a *.hash file on the file system, as well as in the database in a new `content_hash` field. The database serves as the master repository, so if the file system's hash differs (e.g. because a user uploaded a new file from a different server), it's replaced with the version from the database. There are four management commands to aid in various maintenance actions, such as loading files into the database, dumping everything out of the database, deleting orphaned files and regenerating file hashes.
2. I've refactored the general package layout and setup.py to make it a little easier to manage and test. Namely, all unittests can be run directly from setup.py with `python setup.py test`.
3. I've added Python3 support. This can be tested by running `python setup.py test --pv=3`