* Split Docker build to avoid slow cross-compilation
* Push digests of intermediate builds only
* Inline permissions to have them more fine-grained
* Build on runners matching the platform to compile for
* Run on every push to main
* Extract build steps into reusable action
* Add instructions for rule registration
* Add setup steps for coding agent using Bazel
* Make callable workflow so that its environment also applies to subsequent steps
This allows for better reusability and integration. macOS builds still run on Azure due to GitHub's limitation of up to 5 macOS jobs running concurrently.