Improve State hashing performance.

State.hashCode() would (potentially) recursively call hashCode() on the
states in its transition table. We can avoid this by using Object.hashCode(),
since two states are only identical if their transitions point to the
exactly the same objects.

This change halves the construction time on web2.
Add the interface for parametric transitions.
Add parametric transitions for edit distance 1 and 2.

The parametric transitions were computed using the FineNight library
and a custom Python script, that still needs to be cleaned up.
Add more Javadoc to State.
Add Levenshtein automata.
Add unit tests for LevenshteinAutomaton.

The unit tests rely on QuickCheck-like randomization to generate
test instances.
Add a benchmark for Levenshtein automaton construction.