Scanning characters
Scanning characters

This implements scanning of singlular characters delimited by single
quotes. Unicode is supported as well as several kinds of escapes.

I have decided to follow Rust's lead and do not implement support for
fixed-length Unicode escapes (\uXXXX and \UZZZZZZ), for the same reasons:
consistency and readability. Though, byte-escapes (\xFF) are still here
as they deem to be useful.

Also, Sash will not support all C-style escape sequences. Those were
invented partially because of trigraphs, partially because of K&R.
I do not see any real value in providing special support for extra-rare
characters like \f, \v, \a, etc. One can write them via byte escapes
if necessary.

Another distinct 'feature' is lack of escaped single quote. The single
quote character is written as '''. The backslash can be written as '\'.
Escaping backslash is permitted to allow copy-pasting from strings: '\\'.

Finally, some error recovery is provided. As usual, it is quite heuristic,
but that's what you want from error recovery after all: to report common
errors in a legible way. It's nice if anything unexpected is handled in
some rational way too.

ilammy/sash