Add author annotation

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Add alias for Rule methods

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Pass Root terminal as type parameter

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Implicit start rule production

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Remove ParseTree.State inner class

We're exploring a different parse algorithm that doesn't need this.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Rewrite to use NAT algorithm

Non-deterministic Abstract Tokenizers are tokenizers that can return multiple
results for a given position, and may transform any sort of data that comes in
a linear stream (so they may produce nonterminals).

The implementation here is VERY slow. No results caching is done so there is a
LOT of redundant calculation. Also the halt condition is potentially too early.
Also we could do more to prune non-deterministic results. Also error handling
isn't implemented yet. You get the idea.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>