* Move more specialized expression types from optimizer to AST builder
VarStatement now handles its own value consumption
* Move assign-multisubscript-consume logic to the instruction generator
Renamed:
- GetMember to MemberAccess
- SetMember to MemberAssignment
- SetMemberByOperator to MemberAssignmentByOperator
- AssignVariableConsume to VariableAssignmentStatement
Adds:
- ast/ElementAccess: AST node for x[a] or x[a,b,...] (may be get or set)
- ast/ElementAssignment: AST node for x[a] := b;
- ast/ElementIndexes: AST node to hold all indexes for element lookup
- optimizer/AssignmentOptimizer: optimizes := in different circumstances
Adds:
- ast/AssignVariableConsume: AST node for assignment to a variable, while consuming the result
- optimizer/ValueConsumerOptimizer: Optimizes expressions where the resulting value will be consumed