fix: put GoProtocGen in its own exec group (#4605)

When building go_proto_library with two registered execution platforms
(e.g. linux/x86_64 RBE registered first, darwin/arm64 local fallback),
the GoProtocGen action would fail with "cannot execute binary file":

- go-protoc-bin is built via `cfg = "exec"` in _go_proto_compiler, which
independently selects the first registered exec platform (e.g. linux ELF
binary).
- Without --incompatible_auto_exec_groups, go_proto_library's Go
toolchain declaration may have additional constraints (e.g. darwin
arm64) and forces ALL rule actions onto darwin, including GoProtocGen.

This may lead to e.g. a linux binary executing on a darwin platform,
leading to a "exec format error" error.

Fix: declare an unconstrained `go_proto_gen` exec group in
go_proto_library and assign GoProtocGen to it via `exec_group =
"go_proto_gen"`. The group has no toolchain constraints, making it
equivalent to `cfg = "exec"`, so Bazel picks the first compatible exec
platform — the same one that built go-protoc-bin via `cfg = "exec"`.

go.env already carries GOOS/GOARCH/GOROOT as concrete strings from
go_context(), so the generated .pb.go files remain correctly targeted to
the host platform. The generator itself does not need to run on the
target platform.

Fixes #4604 

-- 

I pushed a way to reproduce the issue in
https://github.com/sitaktif/rules_go/tree/rules-go-exec-format-error-repro,
but I don't have an actual test in this PR to prevent future regressions
because I'm not sure how to test that without an overly complicated and
slow setup. Please share any suggestions on how to do that :-)
2 files changed