Tweaked array allocation in freezing tries, should result in fewer allocations overall.
Refactored Lexer.__readNumber__ such that state transition functions are
no longer defined anew on each invocation.  Also refined the number
parsing process a bit, though more work remains.

Specifically, the failure case of an exponent directly after a decimal
(e.g. 10.e4) currently results in a SYMBOL of 10, with .e4 blowing up.
Not an ideal outcome, this should be re-thought.
Tweaked the makefile; it cleans up intermediate files after compilation
and now cleans by default before testing.