Add a variant of home_for_io that consumes the handle. Refactor out common parts of the home_for_io variants.
Split out starting a listener from accepting incoming connections.

The Listener trait takes two type parameters, the type of connection and the type of Acceptor,
and specifies only one method, listen, which consumes the listener and produces an Acceptor.

The Acceptor trait takes one type parameter, the type of connection, and defines two methods.
The accept() method waits for an incoming connection attempt and returns the result.
The incoming() method creates an iterator over incoming connections and is a default method.

Example:

let listener = TcpListener.bind(addr); // Bind to a socket
let acceptor = listener.listen(); // Start the listener
for stream in acceptor.incoming() {
    // Process incoming connections forever (or until you break out of the loop)
}
Parse and reserve typeof keyword. #3228
Emit a better error for attempted unsafe-pointer-self. Close #8306.
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