rustc: Refactor middle::trans::inline
Fix ICE with trans of calls to foreign fns

It was failing occasionally.
Register snapshots.

Closes #16880.
Forbid unsized rvalues

Closes #16813
auto merge of #16933 : nick29581/rust/dst-rvalue, r=nikomatsakis

Closes #16813 

r? @nikomatsakis I feel like I should be checking more things in check_rvalues, but not sure what - I don't properly understand expr_use_visitor
auto merge of #17036 : pczarn/rust/issue-15913-ICE-with-call-trans, r=alexcrichton

A match in callee.rs was recognizing some foreign fns as named tuple constructors. A reproducible test case for this is nearly impossible since it depends on the way NodeIds happen to be assigned in different crates.

Fixes #15913
auto merge of #17063 : huonw/rust/snap, r=alexcrichton

Closes #16880.
rustc: use a TypedArena to allocate types in the type context.
rustc: fix fallout from the addition of a 'tcx lifetime on tcx.
rustc: fix fallout from the addition of a 'tcx lifetime on trans::Block.
rustdoc: fix fallout from the addition of a 'tcx lifetime on tcx.
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.