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
Guide: Fix inconsistency in 'Marcos' section

The old version switched in between examples from the value `5i` to `"Hello"`
and back. Additionally, the code generated by `rustc print.rs
--pretty=expanded` is not as verbose anymore.
Fix keyword table

Markdown tables require a header, and we don't want one.

Fixes #17528
Add `abstract`, `final`, and `override` to reserved keywords
Fix unclear macros documentation.
Remove use of `final` and `override` (now reserved)
Add `abstract`, `final`, and `override` to rust.vim keyword list
Add tests for new reserved keywords `abstract`,`final`,`override`
debuginfo: Add LLDB version handling to test infrastructure.
debuginfo: Don't mark struct fields as artificial.

LLDB doesn't allow for reading 'artifical' fields (fields that are generated by the compiler). So do not mark, slice fields, enum discriminants, and GcBox value fields as artificial.
auto merge of #17855 : steveklabnik/rust/fix_table_reference, r=alexcrichton

Markdown tables require a header, and we don't want one.

Fixes #17528
auto merge of #17866 : jgallagher/rust/reserve-inheritance-keywords, r=huonw

Closes #17862
auto merge of #17843 : coffeejunk/rust/guide-macros, r=steveklabnik

The old version switched in between examples from the value `5i` to `"Hello"` and back.

Additionally, the code generated by `rustc print.rs --pretty=expanded` is not as verbose anymore.
add {Imm,M}utableIntSlice
remove crate_id attribute, add crate_name one

this is true as of https://github.com/rust-lang/rust/pull/15319
add mention of test attribute

Fixes #16413
auto merge of #17748 : mahkoh/rust/int_slice, r=aturon