Remove car analogy.

This was super silly anyway.

Fixes #15539.
Register new snapshots

Closes #15544
lint: extend `#[must_use]` to handle a message.

Similar to the stability attributes, a type annotated with `#[must_use =
"informative snippet"]` will print the normal warning message along with
"informative snippet". This allows the type author to provide some
guidance about why the type should be used.
core: add `#[must_use]` attributes to iterator adaptor structs.

It can be a little unintuitive that something like `v.iter().map(|x|
println!("{}", x));` does nothing: the majority of the iterator adaptors
are lazy and do not execute anything until something calls `next`, e.g.
a `for` loop, `collect`, `fold`, etc.

The majority of such errors can be seen by someone writing something
like the above, i.e. just calling an iterator adaptor and doing nothing
with it (and doing this is certainly useless), so we can co-opt the
`must_use` lint, using the message functionality to give a hint to the
reason why.

Fixes #14666.
librustc: Don't emit call for intrinsics instead just trans at callsite.
libcore: Deprecate advance method on Iterators.
libcollections: Use iterators instead of old-style loops.
libgetopts: Use iterators instead of old-style loops.
libsyntax: Remove uses of advance.
librustc: Remove uses of advance.
tests: Remove uses of advance.
auto merge of #15514 : luqmana/rust/die-advance-die, r=cmr

Closes #15492.
librustc: Remove old codepaths for creating intrinsic functions.
librustc: Update to reflect changes to how intrinsics are codegened.
Derive Clone for Command and StdioContainer
auto merge of #15554 : steveklabnik/rust/gh_15539, r=brson

This was super silly anyway.

Fixes #15539.
librustc: Translate input for transmute directly into dest.
auto merge of #15556 : alexcrichton/rust/snapshots, r=brson

Closes #15544
auto merge of #15561 : huonw/rust/must-use-iterators, r=alexcrichton

Similar to the stability attributes, a type annotated with `#[must_use =
"informative snippet"]` will print the normal warning message along with
"informative snippet". This allows the type author to provide some
guidance about why the type should be used.

---

It can be a little unintuitive that something like `v.iter().map(|x|
println!("{}", x));` does nothing: the majority of the iterator adaptors
are lazy and do not execute anything until something calls `next`, e.g.
a `for` loop, `collect`, `fold`, etc.

The majority of such errors can be seen by someone writing something
like the above, i.e. just calling an iterator adaptor and doing nothing
with it (and doing this is certainly useless), so we can co-opt the
`must_use` lint, using the message functionality to give a hint to the
reason why.

Fixes #14666.
libcore: Reexport a couple of widely-used low-level intrinsics to reduce
code bloat.

This didn't make a difference in any compile times that I saw, but it
fits what we're doing with `transmute` and seems prudent.