Fix ICEs that involved quasi-quotation

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

Fixes #18763
Fixes #18775
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]
rustc: do not inherit #[stable]

This patch tweaks the stability inheritance infrastructure so that
`#{stable]` attributes are not inherited. Doing so solves two problems:

1. It allows us to mark module *names* as stable without accidentally
marking the items they contain as stable.

2. It means that a `#[stable]` attribution must always appear directly
on the item it applies to, which makes it easier for reviewers to catch
changes to stable APIs.

Fixes #17484
Update tests for new stability inheritance rules
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 #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
std: Fix the return value of Duration::span

The subtraction was erroneously backwards, returning negative durations!

Closes #18925
auto merge of #18887 : aturon/rust/controlled-inherit, r=alexcrichton

This patch tweaks the stability inheritance infrastructure so that
`#{stable]` attributes are not inherited. Doing so solves two problems:

1. It allows us to mark module *names* as stable without accidentally
marking the items they contain as stable.

2. It means that a `#[stable]` attribution must always appear directly
on the item it applies to, which makes it easier for reviewers to catch
changes to stable APIs.

Fixes #17484
auto merge of #18926 : alexcrichton/rust/issue-18925, r=huonw

The subtraction was erroneously backwards, returning negative durations!

Closes #18925