Added better unicode lexing, which showed that I can't actually handle
unicode characters very well.

I used code from the printf builtin in bash (which has a \u escape) to
lex escape sequences. I can now support \x[:xdigit:]{1,2}
\u[:xdigit:]{1,4} and \U[:xdigit:]{1,8}, where before I could only do
\xNN or \uNNNN.

However apparently I can't actually print unicode characters, apperently
I'm not great at writing tests because the one character I was testing
as unicode was also in  extended ascii.

I updated lexing chars and string, I still need to update lexing
symbols, then I need to actually fix my unicode handling code (I'll
probably just steal it from emacs)