Move most of the lexer code into a new superclass