Introduce a dedicate object to hold source information.

This means that source code will be hold in memory. This simplifies
handling of unicode decoding, making sure it happens only one, while
still having it available for error messages. This also simplifies the
lexer.