Register snapshots
auto merge of #17159 : brson/rust/snaps, r=alexcrichton

This switches win64 hosts to bootstrap from win64 snaps.
auto merge of #17069 : eddyb/rust/visitor, r=pnkfelix

Few visitors used the context passing feature and it can be easily emulated.
The added lifetime threading allows a visitor to keep safe references to AST
nodes it visits, making a non-owning ast_map design possible, for #13316.
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.
Fix fallout in macro_crate/quote tests.