say no to inheiritance
split Token.h out to Tag & Lexeme
remove Lexer for now
use regex to match lexemes
Token payload is optional int, float, string
add the lookahead part of lexer back in
use lookahead again
spacing
typedef for Lookahead iterator type
Lookahead delegates to underlying iterator
switch emitter for Tag in Lexeme
read input into buffer before regexing
remove cmatch from Lexeme
indentation
make const first in type of params to Lexeme ctors etc.
add equality op to Lexeme
add hash function for Lexeme
use std::array for list of Lexemes

since a constant list of constant objects is not what a std::vector is for
move input buffer out of lex loop
track matching lexemes in a map

so can look back further than just match against buffer with one less char