build.zig: add a 'compile' step to compile the self-hosted compilerwithout installing it.Compilation: set cache mode to whole when using the LLVM backend and--enable-cache is passed.
This makes zig build act the same as it does with stage1. Upside isthat a second invocation of zig build on an unmodified source treewill avoid redoing the compilation again. Downside is that it willproliferate more garbage in the project-local cache (same as stage1).
This can eventually be fixed when Zig's incremental compilation is morerobust; we can go back to having LLVM use CacheMode.incremental and relyon it detecting no changes and avoiding doing the flush() step.