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 thinking i had at the time was that that approach could  lead to more confusion.  i.e. people who had VariableDeclarations would then need to know "sometimes the parent is a variable statement.  Sometimes it is a variable declaration list."  The intent was to make it so all clients would be able to say "ah, i have a variable declaration  as such, i know my parent is always a variable declaration list.  Indeed in the types file, we can strongly type .parent because of that.  

This also made parsing simpler.  parseVariableStatement could just call parseVariableDeclarationList.