auto merge of #17434 : P1start/rust/borrowck-messages, r=nikomatsakis

This was originally part of #17215.

Closes #15506.
Closes #15630.
Closes #17263.

This also partially implements #15838.
auto merge of #17663 : eddyb/rust/method-origin-subst, r=nikomatsakis

Fixes #17662.
core: remove raw::GcBox.
rustrt: remove local_heap implementation.
std: remove gc module.
serialize: remove proxy impls for Gc<T>.
debug: remove Gc support from Repr.
syntax: remove unused imports of Gc and GC.
syntax: ast: remove TyBox and UnBox.
rustc: remove support for Gc.
rustdoc: remove handling of Gc.
docs: remove mentions of Gc.
syntax: mark the managed_boxes feature as Removed.
syntax: remove ObsoleteManaged{Type,Expr}.
tests: remove uses of Gc.
Add lifetime bounds on Items and MutItems.

This also requires a fix for Vec's MoveItems. This resolves issue #16941
Use RawPtr::offset when size_of::<T>() > 0
Add tests for MoveItems
auto merge of #17590 : bjadamson/rust/rustc-improvements, r=alexcrichton

Removes an unnecessary allocation when passing the command line arguments to the librustc driver.
Add fixes for new lifetime bounds