Refactoring and documentation
critical bugfix

* deduplication of lexer actions was broken
* only member names where hashed
discern NFAState and DFAState

* previously all was AutomatonState
* AutomatonState is an abc.ABCMeta now
* the subclasses either return a set (NFA) or a single state (DFA)
  for the Move method, I believe this to be consistent
* this gives quite some speedup because MoveDFA has vanished and been
  replaced by the more efficient implementation of DFAState.Move
  - about 25% in total generation time for my projects using the
    generator
  - reason: the dfa optimizer calls DFAState.Move quite often
    we no longer have to unpack a set and there is on fcall less
* IMHO the code is cleaner that way