Make completion behave consistently no matter if it is run at the
start, in the middle or at the end of an identifier that happens to
be a keyword or a macro name. Since completion is often ran on
incomplete identifiers, they may turn into keywords by accident.
For example, we should produce same results for all of these
completion points:
// ^ is completion point. ^class cla^ss class^
Previously clang produced different results for the last case (as if
the completion point was after a space: class ^).
This change also updates some offsets in tests that (unintentionally?)
relied on the old behavior.