bazel syntax: eliminate two subclasses of BuiltinFunction

This change replaces two test-only subclasses of BuiltinFunction with
StarlarkCallables. (The remaining two subclasses, rule and
repository_rule, will be dealt with in a follow-up.)

Also, change type of rule's and repository_rule's "implementation" parameter
to StarlarkFunction, and eliminate casts that already made this assumption.

Also, give StarlarkCallable.getLocation a default value of BUILTIN.

PiperOrigin-RevId: 285022081
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index dcb9f0f..9fb50eb 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -2088,34 +2088,34 @@
         new NativeProvider<SkylarkClassObjectWithSkylarkCallables>(
             SkylarkClassObjectWithSkylarkCallables.class, "struct_with_skylark_callables") {};
 
+    // A function that returns "fromValues".
+    Object returnFromValues =
+        new StarlarkCallable() {
+          @Override
+          public String getName() {
+            return "returnFromValues";
+          }
+
+          @Override
+          public Object call(
+              List<Object> args,
+              Map<String, Object> kwargs,
+              FuncallExpression call,
+              StarlarkThread thread) {
+            return "fromValues";
+          }
+        };
+
     final Map<String, Object> fields =
         ImmutableMap.of(
             "values_only_field",
             "fromValues",
             "values_only_method",
-            new BuiltinFunction(FunctionSignature.of()) {
-              @Override
-              public String getName() {
-                return "values_only_method";
-              }
-
-              public String invoke() {
-                return "fromValues";
-              }
-            },
+            returnFromValues,
             "collision_field",
             "fromValues",
             "collision_method",
-            new BuiltinFunction(FunctionSignature.of()) {
-              @Override
-              public String getName() {
-                return "collision_method";
-              }
-
-              public String invoke() {
-                return "fromValues";
-              }
-            });
+            returnFromValues);
 
     SkylarkClassObjectWithSkylarkCallables() {
       super(CONSTRUCTOR, Location.BUILTIN);