Inject the TOOLS_REPOSITORY constant in the RuleClassProvider instead of using Constants.java

It also includes one example on how to use the new mechanism in BazelCppRuleClasses.

This is the first phase for the removal of the TOOLS_REPOSITORY constant.

--
MOS_MIGRATED_REVID=113244399
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
index 9a4fb6c2..2eab411 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleDefinitionEnvironment.java
@@ -26,4 +26,9 @@
    * Label#parseAbsolute}. Throws a {@link IllegalArgumentException} if the parsing fails.
    */
   Label getLabel(String labelValue);
+
+  /**
+   * Returns the path to the tools repository. It is different for blaze and bazel.
+   */
+  String getToolsRepository();
 }