Improve error feedback for build cache errors (#2473) We shouldn't fail the build when we can't package a task's outputs. We should also not fail the build when unpacking some already downloaded outputs.
If there was a failure during unpacking, we can expect the task's output files to be in a messed up state. If this happens, we explicitly clean all of the task's outputs, update the pre-execution output file snapshots, and force the task to execute in non-incremental mode.
This commit also removes the retry logic we had previously when "recoverable" errors were encountered while downloading or uploading cached results. Instead, all errors (except for the aforementioned failed unpacking cleanup errors) are recoverable, and we simply switch off the cache for the build after the first such error.