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: Port region resolution to the new visitor
librustc: Remove the old visitor from the crate reader.
librustc: Convert check loans to use the new visitor
librustc: Port loop checking to the new scheduler
librustc: Partially port constant checking to the new visitor
librustc: Finish porting constant checking to the new visitor
librustc: Port match checking to the new visitor
librustc: Port the constant evaluator to the new visitor.
librustc: Make effect checking use the new visitor
librustc: Port entry point finding to the new visitor
librustc: Port free variable finding to the new visitor
auto merge of #8567 : pcwalton/rust/deoldvisit, r=brson

r? @brson