rustdoc: make langstring parsing more robust

This changes the parsing of the language string
in code examples so that unrecognized examples
are not considered Rust code. This was, for example,
the case when a code example was marked `sh` for shell
code.

This relieves authors of having to mark those samples
as `notrust`.

Also adds recognition of the positive marker `rust`.

By default, unmarked examples are still considered rust.

If any rust-specific tags are seen, code is considered
rust unless marked as "notrust".

Adds test cases for the detection logic.
test: Enable #9205-related tests on windows

Fixes #9205.
auto merge of #14591 : klutzy/rust/issue-9205, r=thestinger

Fixes #9205.
auto merge of #14569 : skade/rust/rustdoc-robust-langstring-parsing, r=alexcrichton

This changes the parsing of the language string
in code examples so that unrecognized examples
are not considered Rust code. This was, for example,
the case when a code example was marked `sh` for shell
code.

This relieves authors of having to mark those samples
as `notrust`.

Also adds recognition of the positive marker `rust`.

By default, unmarked examples are still considered rust.
Fix deriving Encodable trait for unit structs

Closes #14021
auto merge of #14596 : Sawyer47/rust/encodable-fix, r=alexcrichton

Closes #14021
docs: Stop using `notrust`

Now that rustdoc understands proper language tags
as the code not being Rust, we can tag everything
properly.

This change tags examples in other languages by
their language. Plain notations are marked as `text`.
Console examples are marked as `console`.

Also fix markdown.rs to not highlight non-rust code.
doc: Remove use of `pub use` globs
syntax: Remove use of `pub use` globs

`quote_expr!` now injects two more (priv) `use` globs.
This may cause extra unused_imports warning.
test: Add tests for closed issue #10764

Closes #10764
Improve code reuse in check_match::specialize()
Remove further code duplication
auto merge of #14509 : klutzy/rust/de-pub-use-glob, r=alexcrichton

This patchset removes `pub use` usage except for `test/`.
cc #11870
Document failure cases for `char_at` and friends.
auto merge of #14598 : alexcrichton/rust/triage, r=huonw

Closes #10764
auto merge of #14601 : skade/rust/remove-notrust-tags, r=alexcrichton

Now that rustdoc understands proper language tags
as the code not being Rust, we can tag everything
properly. `norust` as a negative statement is a bad
tag.

This change tags examples in other languages by
their language. Plain notations are marked as `text`.
Console examples are marked as `console`.

Also fix markdown.rs to not highlight non-rust code.

Amends the documentation to reflect the new
behaviour.
auto merge of #14605 : jakub-/rust/pattern-matching-refactor, r=pcwalton

I've been working around these parts of code and it seems like it could use a bit of a refactor. This is the first step.
auto merge of #14609 : aturon/rust/issue-12882, r=alexcrichton
Move subst data structures into subst.rs, fix capitalization
Revert "wip"

This reverts commit f4de9dea092f8dcf884fe77120aa1c181f69e0dc.