Rework Expression parsing

Make the old Expression class a function and the ExpressionNode
interface Expression. This makes more sense since the parser shouldn't
be what is held when evaluating an expression.
Add parameters to expression contexts
Rename the action subelement alias
Use the absolute difference in the tests
Comment the expression parser
Only pop operators when checking precedence
Ban '.' in variable names
Remove redundant code

The appendToken utility function already handles the 'isDone' case.
Error out on unknown characters in expressions
Use opCall instead of eval for expression

This is a much nicer way to resolve expressions.
Add more parentheses tests for expressions
Fix the parseOneOf helper function
The Fire and Repeat elements only hold one bullet or action
Use to!float rather than atof

It seems that atof was occasionally parsing the string incorrectly. GC
interference? In any case, to!float is better anyways.
Simplify expression testing
Fix '.' handling

The check for it not being in a variable name was hidden.
Add a separate expression subtype for parameters
Move the default expression context into the test

It's not enough for the runner and the required logic shouldn't be part
of the expression API.
WIPWIPWIP