Add test for #5783
auto merge of #8799 : fhahn/rust/ticket_5783, r=catamorphism

I've added a testcase, as mentioned in #5783
Replace HashUtil w/ default method on Hash
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.
Handle `rustpkg build`, etc. when given no args properly

`rustpkg build` et al were only checking one directory up to see if it
was in a dir named "src". Ditch that entirely and instead check if the
cwd is descended from any of the workspace paths. Besides being more
intelligent about whether or not something is a workspace, this also
allows for package ids composed of multiple path components.
librustc: Fix merge fallout
auto merge of #8802 : pcwalton/rust/compile-speed, r=brson

r? @brson
auto merge of #8697 : kballard/rust/rustpkg-no-args, r=catamorphism

`rustpkg build` et al were only checking one directory up to see if it
was in a dir named "src". Ditch that entirely and instead check if the
cwd is descended from any of the workspace paths. Besides being more
intelligent about whether or not something is a workspace, this also
allows for package ids composed of multiple path components.

r? @catamorphism
Upgrade libuv to the current master + our patches

There were two main differences with the old libuv and the master version:

1. The uv_last_error function is now gone. The error code returned by each
   function is the "last error" so now a UvError is just a wrapper around a
   c_int.
2. The repo no longer includes a makefile, and the build system has change.
   According to the build directions on joyent/libuv, this now downloads a `gyp`
   program into the `libuv/build` directory and builds using that. This
   shouldn't add any dependences on autotools or anything like that.

Closes #8407
Closes #6567
Closes #6315