Allow elements/artifacts/parts of artifacts to not be cached remotely
Background
The cache is a major benefit to BuildStream, but sometimes it can be an issue when it's used without question. For some motivating use cases:
- Sometimes you have a very large blob in a single element (e.g. a massive debug file), it might be convenient to allow this to not be cached, but cache a filtered version
- Sometimes you may have a single artifact that is very large, for example if composing a disk image. Pushing this to a cache will likely be wasteful and intensive
- A final use case could be that you have certain files that should not end up in the cache due to licensing.
It would also allow for pipeline optimisation, as you may frequently be waiting for certain big artifacts to push.
Task description
This is somewhat possible by crafting pipelines and projects a little, but it'd be nice for some way to configure this on an element level, perhaps push: false somewhere in configuration? From my understanding, doing this might be a little awkward due to the local caching mechanism, but I may well be wrong there.
Perhaps we could opt these elements out of pushing their artifacts?