ci: fix mise cache issues — per-job keys and rustup component safety net
Two issues with the mise-action cache after #2951:
1. ~/.rustup is NOT included in the mise cache (~/.local/share/mise).
On cache hit, mise sees rust as 'installed' (symlink exists) but
the actual rustup toolchain components (rustfmt, clippy) are missing.
Fix: Rust jobs now run 'rustup component add rustfmt clippy' after
mise-action to ensure components are present regardless of cache state.
2. All parallel jobs shared one cache key (mise-v2-{os}-{arch}-{hash}).
GitHub Actions cache save is first-writer-wins, causing races.
Fix: per-job cache keys (mise-ci-${{ github.job }}) so each job
gets its own isolated cache.
Also deleted stale mise-v2-* caches.