Add automata construction.

Automata are comprised of nodes.
States are the states of the executing machine.
Simplify the API to a single Compile function with Options.
Number the nodes of the automata.
Use interfaces, not functions, for edge labels.

Interfaces are better because they can have String methods and can be Gob serialized.
Add Regexp.Match.
Make token strings their runes, not an internal name.
Change eof to a rune, not a token.
Add character classes.
Correctly distinguish empty match from no match.
Add more tests.