implements robust prettyprinting for tokens

Tok.show[Code] now works and uses newly established Tok.code
to print exactly the string that corresponds to the token in source code.

Tok.show[Raw] now also works: shows offsets and properly escapes Tok.code
so that various flavors of whitespaces are printed in a friendly manner.

TokMetadata, synthesized by a helper macro, is now used to both provide
"expected $x, found $y" error messages and to do typetests on tokens.