Move extraction from a package to the model

Refactored extracting a file from a package to the model, and added a
dependency on atool so it can handle more file formats.  Also, escape the
relative paths coming from the URL.
Add link to download pointer files

refs #5716

Add link to pointer files to Packages table.  Add download pointer file
URL.  Refactor extract and download request code to pull out the
section that returns a file stream, for use with the pointer file
downloads.
Extract files using unar

Replace atool with unar - support for more formats and encodings.  Add
unar to the dependency list.
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.
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 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.
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.