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: Remove the old visitor from the crate reader.
librustc: Convert check loans to use the new visitor
librustc: Long lines
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.
auto merge of #8657 : pcwalton/rust/coherence-each-path, r=graydon

r? @graydon