syntax: store char literals/tokens as `char`s rather than u32s.

Clearly storing them as `char` is semantically nicer, but this also
fixes a bug whereby `quote_expr!(cx, 'a')` wasn't working, because the
code created by quotation was not matching the actual AST definitions.
syntax: implement ToSource for more things in the quasiquoter.

The last few primitive types were missing.
regex_macros: simplify using AstBuilder & the improved quoting.

char literals now work in a quotation.

There were several instances of duplicated functionality in regex_macros
compared to AstBuilder so refactor those out.