Add unwrap method to MoveItems
mark win32 binaries as large address aware

By default, 32-bit Windows executables are restricted to 2GiB of address
space even when running on 64-bit Windows when 4GiB is available.

Closes #17043
auto merge of #17053 : thestinger/rust/large_address_aware, r=sfackler,cmr

By default, 32-bit Windows executables are restricted to 2GiB of address
space even when running on 64-bit Windows when 4GiB is available.

Closes #17043
auto merge of #16903 : mahkoh/rust/move_items_unwrap, r=aturon

Closes #16879
auto merge of #12809 : eddyb/rust/ty-arena, r=cmr

This was inspired by seeing a LLVM flatline of **~600MB** when running rustc with jemalloc (each type's `t_box_` is allocated on the heap, creating a lot of fragmentation, which jemalloc can deal with, unlike glibc).
Remove largely unused context from Visitor.
Track the visited AST's lifetime throughout Visitor.
syntax: add a custom owned smart pointer in ptr::P.
syntax: ast: replace Gc<T> (previously @T) with P<T>.
syntax: fold: use move semantics for efficient folding.
syntax: ast_map: use borrowed references into the AST.
syntax: fix fallout from using ptr::P.
syntax: tests: fix fallout from using ptr::P.
rustc: fix fallout from using ptr::P.
rustdoc: fix fallout from using ptr::P.
fourcc: fix fallout from using ptr::P.
hexfloat: fix fallout from using ptr::P.
regex_macros: fix fallout from using ptr::P.
syntax: implement in-place folding of P<T> and Vec<T>.
syntax: document the ptr module.