Rewrite character input stream.

The previous implementation of File depended on FILE*.
When we want to read from a string, we needed to write the string
to a temporary file to read back.

I realized that there are many ocasssions we want to read
from a string. One example is ##. A string created by token
concatenation needs to be tokenized as if it were read from a file.
We didn't handle that well.

With the new implementation of File, reading from string is
as easy as reading from file.
Add encoding property to preprocessor string token.

A string literal may be prefixed one of u, U, u8 or L.
The lexer needs to read and add the encoding information
to a token.

Currently encoding information is ignored by the compiler
and the code generator.

When a string literal with a prefix is stringnized using #,
the prefix needs to be stringized too.

You usually can't paste anything to a string using ##, but
u, U, u8 or L are exceptions. You can paste one of these
identifiers to create a multibyte string or character literal.