preprocessor: Stop parsing character/string literals when encountering a newline.

This improves error recovery in the usual case of a missing delimiter.
preprocessor: If there is a newline, then the token is not definable.
preprocessor: Accept all defineable tokens after #ifdef/#ifndef, not just identifiers.
remove pptest mode
preproc: fix put_back failing on empty files
ast: When printing octal escape sequences, only pad them to three digits, if a octal digit follows.

Now we print the canonical '\0' instead of '\000'.