Allow invalid number literals as preprocessing tokens

This moves the number literal validation from the lexer into the CPP/C
parsers. I.e. number literal tokens can be invalid number literals now,
which must be supported because they can be used legally with the # or ##
CPP operations.