Report source ranges with ends tightly following token ends.

Previously we'd sometimes consider whitespace after a token as part of
a range ending with that token. Now we stop at the end of the last token,
ignoring whitespace, indents, etc. Whitespace is only included between
tokens in ranges that span tokens.