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.
When you want to know if the user provide actual code for the node in their source file or not. 

In the case where the node is optional, it will show up as missing (because it's not there as the user didn't write it).  And in the case where it is required, it will show up as missing (even htough it is not necessarily 'undefined' due to the parser strictly trying to parse it out.

This helps address cases where we were just checking for the presence or absence of a node. This wasn't working properly for the acse where the user didn't have any code for the node, so we parsed out a missing one.  We'd see the node was not undefined, and hten we'd go report things.

For example, if you had some function that required a body, but didn't provide one, we'd then end up reporting both the missing body, *and* a message that you needed a return statement or throw in the body.  THe latter is pointless.  if the body is missing, don't report errors that only make sense if the body is there.

I will add comments to this effect on the function.