Add support for incremental parsing.

Right now the entrypoint just causes a full parse to happen.  But the LS code is
cleaned up to take advantage of it appropriately.

This will not be checked in until all the incremental parsing work is complete.
The primary problem was that hte parser was setting flags on nodes that didn't belong with them.  Specifically, if you had something like the "let a, b, c" the parser woudl parse a, b, and c as variable declaration, then go back and change them to have new flags on them that were dependent on this outer context.

This broke incremental scenarios because we would want to reuse a variable declaration node while parsing hte variable declaration list, and we'd happily slurp it up despite the node flag not necessarily being correct in the new context it was being parsed in.