Infrastructure updates - get_local_path, browse & delete in Spaces, etc

Several infrastructure and miscellaneous updates in one, coming from AIP reingest work but independent of it.

* ```browse``` and ```delete_path``` are now implemented in protocol spaces, instead of in Space or Package, as they are very dependent on the protocol and should be handled by the appropriate space.
* ```full_path``` and ```full_pointer_file_path``` are now ```@property```'s, since that's effectively  what they are
* Added ```get_local_path``` to help work with packages that are not store locally, but need to be worked with locally.  As the name implies, gets a local path for that package - either the actual local path, or by copying it to the SS internal location
* Pipelines store some pipeline API information so they can call pipeline APIs
* ```compress_package``` accepts an algorithm parameter
> part of my goal with get_local_path was to abstract as much as possible from the calling functions, so they din't have to worry about checking for a local path and then getting it.

My interpretation of the name `get_local_path` was initially that it was simply a getter - like `get_full_path` and friends. I didn't realize it was copying files until I read the code. So, my #1 suggestion would be that this be renamed to something like `copy_to_local_path`so it's clear.

Since there are a couple of code paths that set an attribute and then return a path without expensive disk operations, I think it'd also make sense to expose that distinctly from the rest of this. I could see us making the decision at some point to decide to perform an operation if there's a local path, but skip it entirely otherwise in order to avoid the file copy. Could either do that by making that `get_local_path`, which `copy_to_local_path` checks first as a convenience, or by having 100% separate functions.