Centralize on using `Binder` to introduce new binding levels, rather than having FnSig carry an implicit binding level.  This means that we be more typesafe in general, since things that instantiate bound regions can drop the Binder to reflect that.
Move `leak_check` into its own method, and ensure that all higher-ranked code is in
`higher_ranked.rs`.
Make all predicates higher-ranked, not just trait references.
Implement "perfect forwarding" for HR impls (#19730).
Convert gigantic comment away from `//!` form. It is annoying to
read (`//!` is intrusive) and annoying to edit (must maintain a prefix
on every line). Since the only purpose of a `doc.rs` file is to have a
bunch of text, using `/*!` and `*/` without indentations seems
appropriate.
Remove text on method matching, which is now out of date.
Document new algorithm at a high-level.
Work around #19982 by rewriting test impls to not use anonymous
lifetimes. This currently causes an ICE; it should (ideally) work, but
failing that at least give a structured error. For the purposes of
this PR, though, workaround is fine.
Kill some warnings about shadowed lifetimes
Correct comment on Binder.