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.
I could do htat.  but now our ts namespace (and exports) are very cluttered with these functions.  Because they're also oriented around text spans only, it seems like we'd want to name them somehow to make that clear.  This means that instead of just doing "span.XXX()" we'd need lots of "export textSpanXXX(ts: TextSpan, args...)" floating around the ts module.  However, if that's what you want i'm willing to do that.

Personally, i'd just like a class here.  That most precisely represents what we have here.  An object that contains state and functionality, with only the overhead of the state contributing to its size in memory.