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