Update CsvParser for efficiency

Improve the way CsvParser creates lists to improve efficiency. This is
modeled based on the procedure for reading strings in JsonParser.
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.
Optimize JSON object parsing

Use a builder to optimize parsing to avoid keeping lots of tuples in
memory.
Optimize JSON array parsing
Merge pull request #2 from anishathalye/optimize

Optimize