Unescape identifiers when checking

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