Resolve Go and C++ toolchains for each Go target (#4439)
**What type of PR is this?**
Bug fix
**What does this PR do? Why is it needed?**
Before this change, rules_go would resolve the C++ toolchain for a fixed
helper target and use it in Go targets via a provider. This results in
problems for multi-platform builds since the execution platform of the
C++ toolchain needs to match that of the Go toolchain, which can only be
enforced if both toolchain requirements are declared on the same rule.
**Which issues(s) does this PR fix?**
Fixes #4127
Work towards
https://github.com/bazel-contrib/rules_go/pull/3740#issuecomment-1904816340
**Other notes for review**
5 files changed