Really fix #17982 this time.
rustc: Implement -l and include! tweaks

This is an implementation of the rustc bits of [RFC 403][rfc]. This adds a new
flag to the compiler, `-l`, as well as tweaking the `include!` macro (and
related source-centric macros).

The compiler's new `-l` flag is used to link libraries in from the command line.
This flag stacks with `#[link]` directives already found in the program. The
purpose of this flag, also stated in the RFC, is to ease linking against native
libraries which have wildly different requirements across platforms and even
within distributions of one platform. This flag accepts a string of the form
`NAME[:KIND]` where `KIND` is optional or one of dylib, static, or framework.
This is roughly equivalent to if the equivalent `#[link]` directive were just
written in the program.

The `include!` macro has been modified to recursively expand macros to allow
usage of `concat!` as an argument, for example. The use case spelled out in RFC
403 was for `env!` to be used as well to include compile-time generated files.
The macro also received a bit of tweaking to allow it to expand to either an
expression or a series of items, depending on what context it's used in.

[rfc]: https://github.com/rust-lang/rfcs/pull/403
Constants used in range patterns should not be considered unused
Prefer where clauses to impls in trait resolution (not vice versa).

Fixes #18453.
small fix to output of code sample in intro.md
rustdoc: stop trying to use font-variants we don't have

Browser-generated weights or slants is the last thing we want...
Update one corrupt webfont

As with last time (where I marked .woff files as binary so that git does
not perform newline normalization), it's unclear how it got corrupted in
the first place.
doc: enable OpenType kerning and ligatures
Fix trans of index overload expressions with DST result types

Closes #18487
Add regression test for #18487
Add compile-fail test of DST rvalues resulting from overloaded index
Guide: Fix variable name
Reference: Add missing of's
Monomorphize method types in Typer impl for BlockS

In some obscure circumstances, failure to do this can cause
unsubstituted type parameters to show up where they aren't
expected and cause an ICE.

Closes #18514
Add regression test for issue #18514
Replace deprecated missing_doc attribute.
Fix def ID mapping for method defs

This prevents def IDs with the wrong crate ID from showing up
when using UFCS.  Closes #18501
Add regression test for #18501
Update error messages from "vector" to "array"
Always consider static methods object-safe

This also fixes #18490 as a side-effect by avoiding a later
out-of-bounds slice.