Parser is now tail recursive. Implemented parse tree, self-cleaning on failure
Things left to do:
* A generic lookahead function that doesn't advance the pointer
* Support blank objects and arrays
* Refactor it so only the object and array functions are tail recursive,
which would be ideal for compilers or settings where tail call
optimization isn't done. Without that, the stack can get seriously
bloated.
* Oh and actually implement the interface to actually use the parser.