Add Clang-style annotated source code diagnostics.

This isn't terribly sophisticated yet. It just prints the source
code context along with a marker indicating where things went wrong.
Improved the lexer's error reporting so caret diagnostics look reasonable.
Avoid printing caret diagnostics if any lines contain non-printable characters.
Adapt lex-fail tests to caret diagnostics.
Adapt pp-fail tests to caret diagnostics.
Improve location of \define and \undef errors.
Adapt parse-fail tests to caret diagnostics.