lexer for small subset of Scheme tokens

This is an interesting example because even though it's small, it
overwhelms the list-based representation of finite automata resulting
in around 4s runtime (largely dominated by NFA to DFA conversion). In
addition to the profiling with MLton I've also started tracking a
couple of metrics for later optimization -- number of states and edges
in the NFA and DFA.