Latest Lexer Interface design.
Merges some ideas that came up from several interface design proposals:
  a token hierarchy is needed, because the Lexer should recognice numerical constants and ids
  there should be an enumeration type for every token type, that one can use as "switch" statement on.
  derivation should be used only where needed (for example to have specialisation)
  the "Variant Pattern" (not shure if this is the correct term), to conditionally apply downcasts.
Merge branch 'master' of https://github.com/swp-uebersetzerbau-ss13/common