Fix an ICE on a cast from an inferred nil to uint

Fixes #10991.
rustc: Add self/super hint for extern crate resolve errors.
Add a b'x' byte literal of type u8.
Add a b"xx" byte string literal of type &'static [u8].
Add br##"xx"## raw byte string literals.
Document the byte, byte string, and raw byte string literals.
Refactor backslash-escape parsing to share similar code.

Move into a new syntax::parse::lexer::StringReader method the code
that was almost duplicated for parsing backslash-escapes in
byte, byte string, char, and string literals.
Fix some violations of stronger guarantees for mutable borrows.

See 159e27aebb940926ccf1bad0b2b12087d36ad903
Remove TraitStore from ty_trait

Use ty_rptr/ty_uniq(ty_trait) rather than TraitStore to represent trait types.
Also addresses (but doesn't close) #12470.
Part of the work towards DST (#12938).

[breaking-change] lifetime parameters in `&mut trait` are now invariant. They used to be contravariant.
Fix expected error message in a test.

The change is a result of the char/string parsing refactor.
emacs: Don't overwrite font lock for attributes

This addresses the font lock regression introduced by the earlier pull
request #14818 - attributes are no longer be highligted inside of comments
and strings.

Also add some font lock test infrastructure and some tests for attribute
font locking.
emacs: Add shebang to test script
emacs: Remove outdated references to ~ in tests
auto merge of #14869 : nick29581/rust/tstore, r=nmatsakis

Use ty_rptr/ty_uniq(ty_trait) rather than TraitStore to represent trait types.
Also addresses (but doesn't close) #12470.
Part of the work towards DST (#12938).
rustc: reduce redundant resolve errors.
auto merge of #14880 : SimonSapin/rust/byte-literals, r=alexcrichton

See #14646 (tracking issue) and rust-lang/rfcs#69.

This does not close the tracking issue, as the `bytes!()` macro still needs to be removed. It will be later, after a snapshot is made with the changes in this PR, so that the new syntax can be used when bootstrapping the compiler.
Wrap debuginfo.rs at 80 columns.

Plus a few other misc style things.
change ~[] -> Vec for collect()

This updates the documentation for result::collect() and
option::collect() to use the new-style syntax for vectors, instead of
the old ~[].

Also updates the code blocks for these docs so they will be tested
automatically.

closes #14991
librustc: Don't overwrite vtables when coercing to trait object.
Mark all crates except std as experimental