Edit user URL uses ID not username

refs #6674

Django's 'reverse' bails on characters that are not alphanumeric or -
(including . and @).  Update user-related URLs to use the ID instead of
the username, as some special characters are allowed in the username.
Update buttons to be consistent style

All buttons have class 'btn' on them, so they are styled by bootstrap,
instead of being browser default.  Submit and related 'default' actions
are 'btn-primary' (colored blue).
Add custom endpoint decorator for Tastypie

We have several custom endpoints that implement the same boilerplate
logic.  Add a decorator that implements that, such as checking allowed
methods, authentication, fetching the detail resource, deserializing
the body and providing it to the endpoint as a bundle.
Update custom endpoints to use decorator

Custom endpoints should use new decorator to reduce boilerplate code
and return useful errors if the requested object doesn't exist.
Package.extract_file can extract the whole package

Extract_file now takes an optional extract path which defaults to a
temp directory, and omitting the relative path extracts the whole
package.
Cleanup fixes

Misc fixes: rename PACKAGE_TYPE_[EXTRACTABLE|DELETABLE] to
PACKAGE_TYPE_CAN_[EXTRACT|DELETE] to make easier to extend with other
categories.  Import locations.forms module, instead of each form
separately, so it is easier to add new forms, similarly for models in
forms.py
Add misc attributes to Packages

Package has JSONField that stores misc attributes than need to be tracked,
but are not common enough to deserve their own fields. Update migration.
Package: add new is_compressed helper
Package: add support for checking fixity

This teaches Packages how to check their own fixity, and report the
results. This is currently only supported for bags (which have a
record of their own fixity), e.g. AICs or AIPs.

This also adds a new API which allows external services to request
fixity scans and receive a report of the results. The URL is in the
format /file/<uuid>/check_fixity/

refs #6567
Package.extract_file: handle uncompressed packages