Optimize JSON object parsing

Use a builder to optimize parsing to avoid keeping lots of tuples in
memory.
Optimize JSON array parsing
Change ObjectNode constructor for efficiency

Use a hash map instead of a list map to conserve memory when processing
large files.