Fix ICEs that involved quasi-quotation

* fixed get_tt for doc comments
* properly handle MatchNt in `quote`

Fixes #18763
Fixes #18775
Fix broken documentation link
Add regression test for #18566
Add optional messages to the unreachable macro.

Closes #18842.
Set exceeding bitshifts lint to deny

Discussed in #18587
test: Rename files, fail -> panic.
libsyntax: Forbid type parameters in field expressions.

This breaks code like:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x::<int> ...

Change this code to not contain an unused type parameter. For example:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x ...

Closes #18680.

[breaking-change]
time: Deprecate the library in the distribution

This commit deprecates the entire libtime library in favor of the
externally-provided libtime in the rust-lang organization. Users of the
`libtime` crate as-is today should add this to their Cargo manifests:

    [dependencies.time]
    git = "https://github.com/rust-lang/time"

To implement this transition, a new function `Duration::span` was added to the
`std::time::Duration` time. This function takes a closure and then returns the
duration of time it took that closure to execute. This interface will likely
improve with `FnOnce` unboxed closures as moving in and out will be a little
easier.

Due to the deprecation of the in-tree crate, this is a:

[breaking-change]

cc #18855, some of the conversions in the `src/test/bench` area may have been a
little nicer with that implemented
auto merge of #18830 : adaszko/rust/patch-1, r=steveklabnik
Register new snapshots
auto merge of #18907 : alexcrichton/rust/snapshots, r=jakub-,jakub
auto merge of #18858 : alexcrichton/rust/remove-time, r=jakub

This commit deprecates the entire libtime library in favor of the
externally-provided libtime in the rust-lang organization. Users of the
`libtime` crate as-is today should add this to their Cargo manifests:

    [dependencies.time]
    git = "https://github.com/rust-lang/time"

To implement this transition, a new function `Duration::span` was added to the
`std::time::Duration` time. This function takes a closure and then returns the
duration of time it took that closure to execute. This interface will likely
improve with `FnOnce` unboxed closures as moving in and out will be a little
easier.

Due to the deprecation of the in-tree crate, this is a:

[breaking-change]

cc #18855, some of the conversions in the `src/test/bench` area may have been a
little nicer with that implemented
auto merge of #18862 : murarth/rust/issue-18566-test, r=alexcrichton
auto merge of #18867 : michaelsproul/rust/unreachable-formatting, r=pcwalton

Closes #18842.
auto merge of #18872 : hirschenberger/rust/master, r=thestinger

Discussed in #18587
auto merge of #18877 : michaelsproul/rust/panic-tests, r=alexcrichton

I'm fairly sure all these tests refer to task panics. I skim read them all, but there's a small chance I renamed something too eagerly.
auto merge of #18879 : pcwalton/rust/path-silliness, r=aturon

This breaks code like:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x::<int> ...

Change this code to not contain an unused type parameter. For example:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x ...

Closes #18680.

[breaking-change]

r? @aturon
auto merge of #18811 : pczarn/rust/issue-18763-ice, r=pnkfelix

Fix ICEs introduced in #17830

* fixed get_tt for doc comments
* properly handle MatchNt in `quote`

Fixes #18763
Fixes #18775
Try to remove ty_nil, some kind of error in exhaustiveness checking
Complete the removal of ty_nil, ast::LitNil, ast::TyBot and ast::TyUniq

[breaking-change]

This will break any uses of macros that assumed () being a valid literal.