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

Fixes #10991.
rustc: Start accepting `*const T`

This does not yet change the compiler and libraries from `*T` to `*const T` as
it will require a snapshot to do so.

cc #7362
libsyntax: remove dead code find_linkage_metas

Closes #14329
librustc: Make addresses of immutable statics insignificant unless
`#[inline(never)]` is used.

Closes #8958.

This can break some code that relied on the addresses of statics
being distinct; add `#[inline(never)]` to the affected statics.

[breaking-change]
auto merge of #14977 : pcwalton/rust/address-insignificant-reform, r=brson

`#[inline(never)]` is used.

Closes #8958.

This can break some code that relied on the addresses of statics
being distinct; add `#[inline(never)]` to the affected statics.

[breaking-change]

r? @brson
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.
auto merge of #14956 : nathantypanski/rust/master, r=alexcrichton

Closes #14329

Recent-ish uses of `find_linkage_metas` from my `git grep` output are [here](https://gist.github.com/nathantypanski/b9d2d453718a22765f5c), for those interested who wish to tread through the history.
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.