Simplify streamcache.Cache for efficient null implementation
This commit refactors the internal/streamcache.Cache interface to no longer return a reader, but take a writer instead. This allows for a more efficient streamcache.Null implementation where we no longer need an intermediate pipe. It also simplifies callsites of the cache as a happy side effect.
Also see gitlab-com/gl-infra/scalability#2224 (closed).
Changelog: other