UI-generated Location path is relative to Space

refs #5608

Javascript that generates the path from browse dialog stores the base
path, and removes that from selected path.  Also continues to strip
leading '/'s.  Updated URL to not be hardcoded.
Add backlog purpose

refs #6131

Add backlog purpose.  Also create config option and default values for a
default transfer backlog location.
POST to Location moves files

refs #6131

POST to a Location with information about the source location and the paths
of the files to be moved, copies the listed files from the linked Location
to the Location POSTed to.  Directories are created with 775 permissions
instead of 755.
Allow backlog transfers to be stored & deleted

refs #6131

Add support for storing a transfer in a backlog Location when a Package is
created.  Add checks to ensure packages only go to the correct Location's
purpose (ie AIPs go to AIP storage, transfer to transfer backlog). Refactor
store AIP code to share some in common with backlog transfer.  Expect AIP
storage origin_path's to be relative to the Location. Allow transfers to be
deleted from backlog
Fix moving directories

Moving directories caused the directory to be nested inside itself.  To fix
that, when moving from staging to Space, terminate all directories with /
to make rsync happier.

Move all path pre-processing to Space.move_from_storage_service instead of
duplicating in each child space.
Delete backlogged transfers

refs #6131

Delete folders as well as files correctly.  Don't try to delete pointer
files if they don't exist.
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.
Implement reingest start

refs #6489

Fill out the stub of reingest on the Package model.  Update
extract_file to support this.

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.

Extract_file takes an optional extract path which defaults to temp, and
omitting the relative path extracts the whole package.