[WIP] Disowned the Visitor.

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).

However, I've missed the second user of such references - borrowck - which used to store `@Expr`s in `move_data::MoveKind`.
I've attempted giving `Visitor` an explicit lifetime (which could propagate downwards - the lifetime of every reference is the lifetime of the crate you're vising), but even without considering the refactoring implications, I've hit an ICE cold dead end.
It seems this is [blocked on #5121](https://github.com/mozilla/rust/issues/5121#issuecomment-29979472).