updating descriptive text

refs #6691
control: fix unar version dependency
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
Permit selecting storage service internal as a location type

refs #6819
Do not recreate internal space if one already exists

Previously, if the storage service internal location was changed to a
new location, this startup function would create a new one at the
default path. This now only tries to make a new internal location if
none exists at all.

refs #6819
Add email notification for deletion requests, fixity failures
Add link to download packages from Packages tab

refs #6929
Fixed pointer file path

Fixed pointer file moving to be relative to the Location, not an absolute
path.
Make some attribute functions into properties

Location.full_path, Package.full_path and Package.full_pointer_file_path
are effectively properties instead of functions, so convert them to behave
like properties. Add @property decorator to those functions, and update
where they're accessed.
Add structure for handling local & remote packages

Package functions need to be able to work with a package locally (ie to
extract and return files), but the package may not be stored locally.  To
help solve this, add a Package.local_path temporary attribute.  Whenever a
function needs to work with a package locally, call Package.get_local_path,
which will populate and returne Package.local_path, fetch the package into
the SS internal location if necessary.  If the package is fetched,
local_path_location set.

Related changes:
* download_file endpoint update to check is_compressed
* download_file & LOM update for extract_file change
* many places that used full_path use get_local_path()
Update browse to use child spaces

Browse functionality is dependent on what protocol the Space is, so
move the implementation to the child spaces.  If no child space
implementation is found, try browsing locally.

For PipelineFS browse, update to use ls and parse the output, instead of
running two python calls.
Added API-related fields to pipeline model/form.

Add hostname, API key & username to Pipeline model & form. Display in
pipeline template, with default values if none provided. Allow pipelines
to post API information, but do not display it if queried. Try to guess
a pipeline's IP if it requests default setup.  Update migration.
Minor fixes