initial rev of cancellation
cancellation checks in fourslash
getReferencesAtPosition API: renaming does not find all methods
Remove unnecessary functions.
Simplify parsing code.
Remove need for parser to keep track of the previous token.
Improving incremental parsing perf.
Speed up parsing by not realizing trivia for keywords that are converted to identifiers.
Cache change range span for perf.
Don't null out the cached span.
Move away from a sliding window for the scanner.  Unnecessary abstraction in hot path.
Pass along proper test flag.
Remove tokenKind.  We're going to pack information in the token, and will need to recover the kind from that.
Move to a single simple token implementation.
Pack data more compactly in our tokens.
Better array pooling in the parser.
Adding some incremental parser tests.
Improve incremental parsing by making algorithm less conservative about which nodes can be reused.

Previously we wouldn't reuse a node from a previous tree if it contained a keyword which had been
converted to an identifier.  i.e. if you had:

    private Foo() {
        this.public = a;
    }

Here 'public' was returned as a keyword from the scanner, but converted to an identifier by the
parser.  We marked the entire method as being non-reusable because we didn't want the the
incremental parser returning anything that the scanner wouldn't return.  however, this was somewhat
non-sensical.  The scanner doesn't return nodes in the first place.  So, if we're trying to reuse
a node, the presense of subnodes whihc are parser generated is fine.

Of course, the token itself is not reusable by the incremental parser.  i.e. if the parser chooses
is asking for *tokens* (as opposed to nodes), then we can't return 'public' as an identifier.  This
is not the same as what the scanner would have produced, and that could screw up the parser.

This speeds up incremental parsing great in files that contains lots of keywords-as-identifiers.
Libraries tend to hit this a fair bit as there is quite a lot of use of names like 'string' for
parameter names.
No need to track positions now that tokens/trivia contain them.

This also helps for perf a bit as finding the fullWidth of a node can be
expensive the first time is it called.
Delete empty file.