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.
This is for non-optional nodes that are missing, and for optional nodes that are missing.  It provides a uniform way for client code to ask "is this there" and have it return "no" both in the case where it was optional, but missing, and required, but not provided.