Register new snapshots
use emit_tuple_arg while serializing tuples
Integrate builtin bounds fully into the trait checker
Integrate caching of results. Measurements show approx 90% hit rate.
Move unsafe destructor check from kind.rs into wf.rs
Remove checks that are already being done during typeck
Remove redundant local variable checks.
Move checks for closure bounds out of kind.rs
Remove the last redundant check from kindck, and then remove the pass as well.
Move checking of whether fields are Sized or not into wf / trait code.
Remove as much of TypeContents as I can -- unfortunately, it is still
used by EUV to compute whether a given type moves-by-default.
Add partial_min/max to libcore/cmp

Add partial_min/max to libcore/cmp

Match against None and mark as experimental

Shortened documentation.

Removed whitespace
auto merge of #17482 : hoeppnertill/rust/master, r=alexcrichton

Intended to prevent each user to write his own partial_min/max, possibly differing in slight details. @sfackler encouraged to PR this on IRC.

(Let's hope this works... First PR.)
Fix various places that were affected by adding core as dep of libc
auto merge of #17466 : nikomatsakis/rust/oibt, r=pcwalton

Moves the vast majority of builtin bound checking out of type contents and into the trait system.

This is a preliminary step for a lot of follow-on work:

- opt-in builtin types, obviously
- generalized where clauses, because TypeContents has this notion that a type parameter has a single set of builtin kinds, but with where clauses it depends on context
- generalized coherence, because this adds support for recursive trait selection

Unfortunately I wasn't able to completely remove Type Contents from the front-end checking in this PR. It's still used by EUV to decide what gets moved and what doesn't.

r? @pcwalton
auto merge of #17495 : alexcrichton/rust/snapshots, r=pcwalton

cc @nick29581
auto merge of #17504 : danburkert/rust/tuple-serialization, r=alexcrichton

The tuple serialization logic should be using the tuple-specific emit function.  This fixes part of #17158.  The JSON encoder already proxies to `emit_seq_elt` when `emit_tuple_arg` is called, so this should have an effect.
Fix BitvSet union_with and symmetric_difference_with giving incorrect results when the BitvSet passed in is larger than self.