Clarify string escaping
The spec defines string escapes like \a as \x07 - but doesn't say if \x07 is a legitimate escape. The octal escapes list \119 as \t9, but don't say what rules are used to determined it's a single character escape. There is no notation for specifying Unicode values. Should we just copy the spec from https://python-reference.readthedocs.io/en/latest/docs/str/escapes.html?
See https://github.com/bazelbuild/starlark/issues/112, which I think covers this issue. (I've been hoping to fix #112 today, though time keeps slipping away.) In short: text strings will permit \xXX escapes for values in the range 0-127, and byte strings will permit them for values in the range 0-255.
Unicode code points will be denoted as \uXXXX or \UXXXXXXXX, which may appear in text or byte strings. In a text string, the escape denotes the UTF-k encoding of the 16- or 32-bit Unicode code point. In a byte string, the escape denotes its UTF-8 encoding. Text and byte string literals may also contain unescaped non-ASCII code points, such as "Ω" or b"Ω" in the source file, which is assumed to be encoded as UTF-8. (Bazel has a bug in which its source files are currently assumed to be Latin1, so we may need to temporarily disallow non-ASCII in literals in Bazel, to avoid confusion.)