Unescape identifiers when checking. Fixes gh-1885

Replace escape sequences in identifiers with unescaped codepoints during processing, such that
\u0065val is the same as eval. This helps to prevent nasty uses of unwanted features from escaping
detection.

Identifier tokens now provide a `raw_text` property which access the actual text of the identifier
used in source code. This allows the same error messages to be reported as previously.

Closes #1885
Closes #1886