Added keyword/identifier tests
Updated example again

Changed how node types are defined. I was trying to simplify lexing of :refs, but went another direction. Keeping the change anyway, I like it better now
Added survivable lexer errors

Also made the LexerError hierarchy better, passing the position up through the constructor.
Added symbol lexer

This will handle Nix operators and unquoted token literals the same way. They're sort of treated like identifiers, but with a non-intersecting character set. Some symbols will break the token (e.g. << will come out as two < tokens) and need to be escaped to appear in a symbol sequence.