Fix minor warnings.
Add preliminary (and probably somewhat incomplete) implementation of the Eclipse Expression AST.
Our AST has no parent pointers, which means we can reuse subexpressions.  This should greatly reduce our memory usage.
An eventual goal is to integrate types and values directly into the Expression AST, removing the Expression vs TypedExpression distinction.  This will make it easy to get types and values for subexpressions, which will help e.g., side effect handling.
Replaced the Eclipse AST with our AST.
Since our AST has no parent pointers and we reuse nodes during synthesis, this should save memory.
We still need to remove TypedExpression (using our AST nodes directly instead).
We should then be able to remove many of the make* methods in ExpressionMaker.
Our new AST Expressoin and Type nodes now store their own types.
We also should store all values and result strings externally.
We should now be able to remove the TypedExpression class and its friends.
Happy Thanksgiving!
Removed the TypedExpression class hierarchy.
Now all of our code deals directly with our own Expression AST, which can be shared and have their own types and results.
Cleanup ExpressionMaker.
Further ExpressionMaker cleanups.
Minor cleanup.
Fix side effect handling at depths 2+.
Optimization: when handling side effects, re-evlaute only the expressions we need in a new state rather than all of them.