Kill all underscores

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Throw exceptions where prudent

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Introduce handling path for ambiguous grammars

We now sweep for any ambiguities when we do our final pass. If we find them, we
call resolveAmbiguities, which in the default implementation simply throws an
exception. Child classes may choose to do more.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Make sure we parse the whole stream

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Split Token class from internal Symbol class

The Token class, which is shared, no longer accepts an integer for its first
type parameter. We convert it to the very similar Symbol class internally when
we need to, and that class takes an integer for type.

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