Compile function call expressions.

Mostly reuses the interpreters argument checking and helper functions.

--
MOS_MIGRATED_REVID=107395974
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java
index e3dc7d1..ed4b127 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/AssignmentStatement.java
@@ -77,7 +77,7 @@
   @Override
   ByteCodeAppender compile(
       VariableScope scope, Optional<LoopLabels> loopLabels, DebugInfo debugInfo)
-          throws EvalException {
+      throws EvalException {
     return new ByteCodeAppender.Compound(
         expression.compile(scope, debugInfo),
         lvalue.compileAssignment(this, debugInfo.add(this), scope));