Store artifact manifests in metadata
Currently when staging things we walk the extracted artifact frequently using system calls.
Since we have a system for reading back metadata that we encode at build time, we should be using that instead.
First, the Element needs to offer an API for fetching the manifest; calling that API before the element's artifact is in the local cache should cause an error. This API is implemented by storing a new manifest.yaml in the artifact metadata.
Then, we just use the new API in place of utils.list_relative_paths() for reading the artifact manifest.