Disowned the Visitor.
Add an optional `@ast::Pat` to `node_local`, borrowck needs the span.
auto merge of #11161 : eddyb/rust/de-at-visitor, r=huonw

The primary user of `@T`/`P<T>` references from `Visitor` was `ast_map`, which in turn had two users (phase 3 in rustc and a step in loading items from metadata).
Both of them have been rewritten to use `ast_map` as a folder (this might speed up the compilation time of stage2 rustc by 100-200ms just because a fold + a visit are merged together).