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.
I see a lot of changes like this, but the node being tested is optional so the existing code is already correct, not to mention shorter and less confusing because use of the function implies that the node is *not* optional but rather a required node that is missing.

We already have an established practice for encoding missing optional nodes: undefined. And we have an established practice for checking for undefined: Simply test the value. We're not going to change that.