Re-do the 30 minute intro

This was originally on my blog, so it's incredibly informal. Let's make
it better.
Add example to doc for `slice::ImmutableSlice::binary_search`.

Fix #17817.
syntax: Parse outer attributes in quote_method!

Fixes #17782.
auto merge of #17820 : pnkfelix/rust/fsk-improve-binary_search-doc2, r=alexcrichton

Add example to doc for `slice::ImmutableSlice::binary_search`.

Fix #17817.
doc: Update output of `rustc --version`
Remove core::any::AnyPrivate

[Previously](https://github.com/rust-lang/rust/commit/e5da6a71a6a0b46dd3630fc8326e6d5906a1fde6),
the `Any` trait was split into a private portion and an (empty) public
portion, in order to hide the implementation strategy used for
downcasting. However, the [new
rules](https://github.com/rust-lang/rust/commit/e9ad12c0cae5c43ada6641c7dc840a0fbe5010a2)
for privacy forbid `AnyPrivate` from actually being private.

This patch thus reverts the introduction of `AnyPrivate`.

Although this is unlikely to break any real code, it removes a public
trait and is therefore a:

[breaking-change]
Revise DST test to not require duplicate errors.
Properly handle cfgs in rustdoc

Rustdoc would previously improperly handle key="value" style cfgs, which
are notably used for Cargo features.
Use slice syntax instead of slice_to, etc.
Put slicing syntax behind a feature gate.

[breaking-change]

If you are using slicing syntax you will need to add #![feature(slicing_syntax)] to your crate.
Rename slice::Slice
Rename slicing methods
Reinstate AsSlice impls for Option and Result
library-level docs for collections
add missing btree re-exports
auto merge of #17745 : aturon/rust/revert-any-private, r=alexcrichton

[Previously](https://github.com/rust-lang/rust/commit/e5da6a71a6a0b46dd3630fc8326e6d5906a1fde6), the `Any` trait was split into a private portion and an (empty) public portion, in order to hide the implementation strategy used for downcasting. However, the [new rules](https://github.com/rust-lang/rust/commit/e9ad12c0cae5c43ada6641c7dc840a0fbe5010a2) for privacy forbid `AnyPrivate` from actually being private.

This patch thus reverts the introduction of `AnyPrivate`.

Although this is unlikely to break any real code, it removes a public trait and is therefore a:

[breaking-change]
Clarify that assigning/comparing different tuple types to one another won't compile
auto merge of #17807 : nick29581/rust/slice6, r=aturon

r? @aturon
Re-exports core::str::Utf16CodeUnits in std::str

Closes #17751
Fix the most egregious instances of "local ambiguity: multiple parsing options..." error in macros, which often occurs when trying to match parts of Rust syntax.
For example, this matcher: `fn $name:ident( $($param:ident : $pty:ty),* )` would fail when parsing `fn foo()`, because macro parser wouldn't realize that an ident cannot start with `)`.

This resolves #5902, and at least partially mitigates #9364 and #3232.