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.
If I understand you right, optional missing nodes are still just indicated as undefined, i.e. nothing changed about how we encode missing optional nodes? If so, why did you change many places (but not all places) to call this function on optional nodes when it is cheaper to just say e.g. `if (func.body) ...`? I much prefer the old way of checking.