Move build cache packaging and execution to build-cache-packaging
With this change the build cache becomes independent of tasks, so that in future it can be used to cache things like artifact transforms and Kotlin build scripts via a unified interface.