Store AIP: handle AIPs without pointer files

This is needed to support uncompressed AIPs, which do not have
pointer files.

refs #6589
Package: add new compress_package instance method

This supports features such as downloading entire AIPs for
uncompressed AIPs.

Note that this currently only tarballs the file without performing
actual compression.

refs #6589
PackageResource: allow downloading uncompressed packages

This also causes Package.get_download_path() to raise, as uncompressed
directories are not considered downloadable.

refs #6589
Package: don't try to call methods on None pointer_file_location

This will be unset for certain types of packages, like uncompressed AIPs.

refs #6589
Pointer file request: return 404 if no pointer file exists

refs #6589
Extract file request: adjust path for uncompressed packages

refs #6589
Extract file request: return 404 if requested file not present

refs #6589
Extract file request: return 501 if package can't be extracted

refs #6589
Roughed in AIP recovery model functionality.
Added endpoint to submit recovery requests to.
Refactored delete/recover endpoints.
Added AIP request administration to UI.
Refactoring AIP request handler.
Removed setting used during testing. Got recovery working.
Added corrupt files backup during AIP restore.
Setting for where bad AIP files get backed up.

Added a setting allowing the directory where bad AIP files should be
copied to to be specified.
Added warnings if AIP restore backup dir not set.
Added deletion of temp package.
Fixed issue caused by refactor.
Added auto-create recovery location.