Change internal representation of AST

Use more memory-efficient representation for ArrayNode. Linked lists are
inefficient because the links themselves can take up a huge amount of
space. A good alternative is the Vector type, a bit-mapped vector trie.
This data type, like List, is immutable, so no safety is sacrificed in
implementing this optimization.
Optimize parsing

Modify code to avoid creating unnecessary anonymous function objects.
This results in a significant reduction in memory usage when processing
large files.