Track kind of closure in upvar categorization

Keep track of the kind of closure responsible for an upvar
Categorize upvars in `Fn` unboxed closures as freely aliasable

This causes borrowck to correctly reject mutation or mutable borrows
of upvars in `Fn` unboxed closures since the closure environment is
aliasable.

This also tracks the responsible closure in the aliasability
information returned and uses it to give a helpful diagnostic.

Closes issue #17780
Fix unit test that was illegally mutating an upvar
Add regression test for issue #17780
auto merge of #17777 : lambda/rust/fix-docs-short-hash, r=alexcrichton

The escaped newline in the middle of the variable reference breaks the
short hash substitution, leaving the link text exmpty; rewrap so that
each replacement is on its own line.
auto merge of #17785 : P1start/rust/diagnostics, r=alexcrichton

Closes #17765.
Closes #15524.
Closes #14772.
Fix target-feature codegen option syntax in rustc man page.

The man page stated that the list of features was space-separated when
it's actually comma-separated.
String::truncate doc: also fails if not a char boundary
Fix cfg syntax warnings in libnative
auto merge of #17799 : ebfe/rust/cfg_warn, r=alexcrichton

Probably fallen through the cracks in #17630.
Add regression test for issue #17734
adding iterator benches to tree-based maps for comparison purposes
auto merge of #17762 : bkoropoff/rust/issue-17734, r=alexcrichton

Closes issue #17734

r? @nick29581
Handle emitting debug info for unboxed closures

This fixes an ICE.  Closes issue #17021
Build regression test for issue #17021 with -g

This causes it to hit the previously ICEing debuginfo codepath
Fix handling of struct variants in a couple of places

Fixes #17405.
Fixes #17518.
Fixes #17800.
auto merge of #17794 : SimonSapin/rust/patch-8, r=alexcrichton
work around yet another MinGW-w64 ASLR bug
flesh out BTree docs
auto merge of #17809 : thestinger/rust/windows, r=eddyb