Improve the error messages for mismatched numbers of type params.
Fix the handling of type params on generic static methods. Closes #7571.
Fix another default method ICE in type_use. Closes #7675.

Also reworks a bunch of type_use to make things work for default
static methods soon.
Clean up Repr impls a bit so we can add generic impls for @ and ~.
Normalize self types for monomorphization.
Get static default methods working in the non-cross-crate case. Work on #7569.
Get cross crate static default methods working. Closes #7569.
Drop a now unnecessary argument from maybe_instantiate_inline.
Take default methods out from behind the flag.
auto merge of #7725 : msullivan/rust/default-methods, r=pcwalton

r?
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.
compiletest: Remove stray merge markers and fix some tests.