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.
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.