bazel syntax: move all tree-walking evaluation logic into Eval

All tree-walking evaluation logic belongs in Eval.
All basic operations on Starlark values belong in EvalUtils.
The syntax classes should know nothing of these concepts.

In the interests of sanity, this change only moves existing
logic with minimal unnecessary edits.
(One exception: BinaryOperatorExpression.evaluateWithShortCircuiting was inlined.)

FuncallExpression has not been moved yet because it is so large,
but as a first step, its relevant methods have all been made static,
with an additional parameter.

Every doEval method is now a case in Eval.doEval;
The virtual method dispatch is replaced by switch(kind()).
Other helpers have moved into Eval, such as:
  createInvalidIdentifierException
  maybeTransformException
  getSpecialException
  createInvalidIdentifierException

StringLiteral constructor is now private.

Subsequent changes will move FuncallExpression, simplify Eval,
and move value operations into EvalUtils.

PiperOrigin-RevId: 269661142
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
index f2cff04..1d587cb 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java
@@ -1241,7 +1241,7 @@
       Event ev = handler.messages.get(0);
       throw new EvalException(ev.getLocation(), ev.getMessage());
     }
-    return expr.eval(this);
+    return Eval.eval(this, expr);
   }
 
   /** Executes a Skylark file (sequence of statements) in this environment. (Debugger API) */