Split Lexer into Lexer and Tokenizer

Signed-off-by: Oleg Bulatov <oleg@bulatov.me>