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.
Add reingest button and endpoint

refs #6488

Add endpoint and button to Packages list for re-ingest. Reingest form
added so user can select which pipeline to reingest on as well as the
type of reingest.
Implement reingest start

refs #6489

Fill out the stub of reingest on the Package model. Reingest copies the
package to SS internal location, extracts it if it's a file, copies a
subset of files to the pipeline's currently processing location, then
deletes the temporary copy.  The METS is always a required file, and all
objects (preservation and original) are required for access reingest.
We only create access copies from originals now, but will from
preservation in the future.