mv file metadata to individual FILENAME.json files

IMPORTANT: DESTRUCTIVE AND INCOMPLETE EDIT!

We need to be able to remove certain entity files and their
metadata from the collection repo before publishing.
In order to do so, we have to move the file metadata from the
entity.json to individual FILENAME.json files.

This should hopefully result in cleaner and more consistent
code, after all the dust settles.  However, there is a lot of
dust in the air as of thie commit!
common function for writing pretty and git-friendly JSON files

Alphabetizes keys so they stay in the same order, which makes
comparison of different versions possible.
specify sha1 and role in entity.file()

because same file may be uploaded in multiple roles.
revise file.__init__, load_json, dump_json; keep fields in FIELDS

Instead of having certain fields like access_rel be exceptions
to the FILE_FIELDS rule, include them as hidden/uneditable fields.
This greatly simplifies instantiation and writing.

Revised file.__init__, base everything around the path_abs.
refactor tasks.py to work with refactored DDRFile
re-enable new-access-file link on file detail page
do something logical if file json is missing
fix tasks add_file so actually adds file.json to the repo. derp.
update file json when generating new access file