Allow collecting coverage for go_binary executed as child process (#4461)

**What type of PR is this?**
feature

**What does this PR do? Why is it needed?**
Adds a shim to go_binary when built in coverage mode to collect coverage
info. Useful for integration testing.

**Other notes for review**
Added integration test

Manual testing:
```
bazel coverage foo:all --cache_test_results=no --instrument_test_targets --instrumentation_filter=//... --combined_report=lcov
genhtml -o coverage_html /private/var/tmp/_bazel_dzbarsky/2c76d2042b2c36d4458efe14b865e618/execroot/io_bazel_rules_go/bazel-out/darwin_arm64-fastbuild/testlogs/foo/foo_test/coverage.dat && open coverage_html/index.html
```
<img width="968" height="320" alt="image"
src="https://github.com/user-attachments/assets/b2b7ef3e-bd8f-46ff-9fa8-66581b735f24"
/>
<img width="669" height="286" alt="image"
src="https://github.com/user-attachments/assets/55b24983-67b4-490a-b9ec-85dfef76470c"
/>

Fixes https://github.com/bazel-contrib/rules_go/issues/3513
14 files changed