Move C++ coverage collection logic out of collect_coverage.sh

This PR pulls the C++ code coverage collection logic out of `toos/test/of collect_coverage.sh` and moves it to a new script `tools/test/collect_cc_coverage.sh`. There are 2 reasons for this:
* to make the scripts easier to understand and maintain
* in preparation for having a more general code collection logic

This PR does not change the behavior of Bazel, is just a no-op refactoring.

Progress on #5882

Closes #5801.

PiperOrigin-RevId: 209923852
diff --git a/tools/test/BUILD.tools b/tools/test/BUILD.tools
index c41e293..003431b 100644
--- a/tools/test/BUILD.tools
+++ b/tools/test/BUILD.tools
@@ -24,6 +24,11 @@
 )
 
 filegroup(
+    name = "collect_cc_coverage",
+    srcs = ["collect_cc_coverage.sh"],
+)
+
+filegroup(
     name = "coverage_support",
     srcs = ["collect_coverage.sh"],
 )