Package.compress_package: correctly use relative path

Fixes #7102.
Package.compress_package: fix for files, period in name

* If a period is in the name of a directory package that is being
  compressed, os.path.splitext() splits the name of the directory
  as though it were a file extension.
* If full_path was a file and not a directory, the rsplit and subsequent
  join produces incorrect results, e.g. for /path/to/aip/name.7z:
  /path/to/aip/.7z instead of /path/to/aip/

Refs #7102.
postrm: fix to ensure upgrades work

added logic to debian/postrm script
to prevent files from being deleted during upgrades
Add preinst script to work around 0.3.0 postrm
Use storage_service.log universally
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
Update delete to use child spaces

Delete 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 deleting the path locally.
Delete staging copy when moving from storage service
compress_package accepts compression algorithm parameter

Add compression constants to Package class for algorithms supported by
Archivematica.  Update compress_package to take a parameter for which
compression algorithm to run and use that.
Package: Split get_local_path to get/fetch_local_path

get_local_path does not imply it may do a copy. Split it into two
functions, get_local_path which returns a local path only if it already
exists (or None), and fetch_local_path with the old behaviour of
copying the package locally if it isn't found. Update references to use
fetch_local_path.
Space: Move path mangling to Space

move_to_storage_service expects the source path to be absolute, and the
destination path to be absolute inside the staging path. Since this is
common, move it to Space.
Extract file: Optionally strip SIP name & UUID

refs #7214

Uncompressed AIPs may not have the SIP name & UUID in the file path.
Currently, view AIP files has the extra folder, but view backlog
files does not. Update code to work whether or not the path is prepended
with the SIP name & UUID by optionally stripping it.
Added SWORD server space type.

refs #5980

Added SWORD server space type and creation of space by default.
rough work.
Roughed out deposit endpoints.