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.
Let/Const can be used for variables not in a variable statement.  For example:

```typescript
for (let a, b, c ...) {
}
```
We don't necessarily have variable statements in all the places where have variable declarations.