Extend self for colors.
Permit certain punctuation in identifiers. _ alone is now a token.
id token notes now point to the is_id_char function.

Seemed easier than describing it in the token enum.
Note hexnum support in numeric token comment.
Doc comments for most of lexer.h
attr_*s -- one line per attribute.
lexer::peek is now const.

As such, the two member variables it touches are marked mutable because
they exist purely to cache its result, though this is assuming that the
feed function doesn't change depending on time, only on the number of
calls made to it (i.e., it yields a sequence).
Use switch single-character punctuation that starts idents.

Easier to modify, since I can just add/remove cases as needed.
Default values for line/column member variables.