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.

To work better with local_path, extract_file defaults to extracting to SS
internal location and no longer returns a temp folder to be deleted.

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()