Remove all the slim token types.

These end up incurring a fairly high runtim cost (presumably because we blow out
too many polymorphic inline caches).
cache text in tokens.
Adding strong asserts to make sure that our trees are properly parented.
Verify parent pointers as we walk down the tree.
Revert "Allow incremental parsing to work in more situations."

This reverts commit 9f5faddb3a88ce6cda98b354ec35338665ad85a3.

There were still some sitations where parent pointers were wrong.  I've added more aggressive checks
in the test harness to catch this, and i've reverted this optimization.  We now incrementally parse
as before.  i.e. if we're speculatively parsing, we don't reuse nodes from the old tree.
Adding progress indicators to Fidelity tests.
No need for typewriter to find an element for an element.  It already has one.
Remove the text snapshot pointer from tokens.
Merge branch 'develop' into simplerTokens
Merge remote-tracking branch 'origin/simplerTokens' into develop

Conflicts:
	src/compiler/astHelpers.ts
	src/compiler/syntax/parser.ts
	src/compiler/syntax/syntaxElement.ts
	src/compiler/syntax/syntaxTree.ts
	src/compiler/syntax/testUtilities.ts
	tests/Fidelity/Program.ts