librustc: Remove `&const` and `*const` from the language.

They are still present as part of the borrow check.
librustc: Add support for type parameters in the middle of paths.

For example, `foo::<T>::bar::<U>`.

This doesn't enforce that the type parameters are in the right
positions, however.
librustc: Ensure that type parameters are in the right positions in paths.

This removes the stacking of type parameters that occurs when invoking
trait methods, and fixes all places in the standard library that were
relying on it. It is somewhat awkward in places; I think we'll probably
want something like the `Foo::<for T>::new()` syntax.
librustc: Convert check loans to use the new visitor
test: xfail a test that relies on old path behavior.
librustc: Fix merge fallout.
librustc: Stop calling `each_path` in coherence.

10% win or so for small crates.
libstd: Fix merge fallout.
librustc: Remove `each_path`.

This does not implement lazy symbol resolution yet.
librustc: Implement lazy module loading.
librustc: Implement basic lazy implementation loading.

This is only for implementations defined in the same crate as the trait they
implement.
librustc: Fix problem with cross-crate reexported static methods.
librustc: Fix merge fallout
auto merge of #8802 : pcwalton/rust/compile-speed, r=brson

r? @brson