SearchPathFactory: fix crash if curDir == null
PPLexer: decode the contents of string/char

Until now we only stored the literal and postponed the decoding
of escapes, etc, until the C lexer. However, it is more practical
to do it in PPLexer. It enables better error messages (exact position
instead of character offset). It also allows us to use the values
directly in the preprocessor when we need them,