extra: add tests for test::MetricMap, MetricDiff, ratchet.
extra: Add metrics functions to test.
compiletest: Add support for metrics and ratchet modes.
Add configure and make machinery to activate perf metrics and ratchets.
extra: reduce bench loop max time to 3s.
rustc: implement a `#[no_implicit_prelude]` attribute.

It disables the insertion of `use std::prelude::*;` into the top of
all the modules below the item on which it is placed (including that
item itself).
auto merge of #7844 : huonw/rust/no-implicit-prelude, r=alexcrichton

It disables the insertion of `use std::prelude::*;` into the top of
all the modules below the item on which it is placed (including that
item itself).

(Similar to GHC's `-XNoImplicitPrelude`.)
make: turn off --bench when running under valgrind
extra: avoid possible divide-by-zero conditions test.
auto merge of #7829 : graydon/rust/codegen-compiletests, r=cmr

This should get us over the hump of activating basic ratcheting on codegen tests, at least. It also puts in place optional (disabled by default) ratcheting on all #[bench] tests, and records all metrics from them to harvestable .json files in any case.
librustc: Add a lint mode for unnecessary `copy` and remove a bunch of them.
librustc: Remove all uses of "copy".
librustc: Remove `copy` expressions from the language.
librustc: Remove all uses of the `Copy` bound.
test: Fix tests.
librustc: Change repeated vector expressions to use implicit copyability.
librustc: Remove the `Copy` bound from the language.
test: Fix tests.
libsyntax: Remove some multi-gigabyte clones that were preventing bootstrapping on Windows.
librustc: Remove some extra "copy" keywords that came in before this change merged.