lexer: show correct span on lexical errors

Previously, the lexer calling `rdr.fatal(...)` would report the span of
the last complete token, instead of a span within the erroneous token
(besides one span fixed in 1ac90bb).

This commit adds a few wrappers around `rdr.fatal(...)` that set the
span based on the `StringReader`'s state, give or take, so that all
fatal errors in `libsyntax/parse/lexer.rs` can now report the offending
code more precisely. A number of tests try to verify that, though the
`compile-fail` testing setup can only check that the spans are on the
right lines, and the "unterminated string/block comment" errors can't
have the line marked at all, so that's incomplete.

Closes #9149.