bazel syntax: delete BaseFunction.name field

Leave getName method abstract.
Some subclasses want a field, others need a method.

BaseFunction is one step closer to becoming an interface.

Also:
- eliminate ProviderFromFunction, which was not an abstraction but merely
  code-reuse hack.
- inline FakeStarlarkCallable class into sole point of use.
PiperOrigin-RevId: 280185359
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 ff07322..231b373 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,7 +2088,12 @@
               "values_only_field",
               "fromValues",
               "values_only_method",
-              new BuiltinFunction("values_only_method", FunctionSignature.of()) {
+              new BuiltinFunction(FunctionSignature.of()) {
+                @Override
+                public String getName() {
+                  return "values_only_method";
+                }
+
                 public String invoke() {
                   return "fromValues";
                 }
@@ -2096,7 +2101,12 @@
               "collision_field",
               "fromValues",
               "collision_method",
-              new BuiltinFunction("collision_method", FunctionSignature.of()) {
+              new BuiltinFunction(FunctionSignature.of()) {
+                @Override
+                public String getName() {
+                  return "collision_method";
+                }
+
                 public String invoke() {
                   return "fromValues";
                 }