Fix for make -j race from #9531 injected by cleanup in b1a22518f0c687db.
rustdoc: Don't emit redirect pages for variants/fields

It's just a waste of disk space and it can be done just as well in JS.
rustdoc: Fix searching for default methods

Closes #9566
rustdoc: Fix search for something on the same page
rustdoc: Include source files with documentation

All items have source links back to their actual code. Source files can be
omitted with the doc(html_no_source) attribute on the crate. Currently there is
no syntax highlighting, but that will come with syntax highlighting with all
other snippets.

Closes #2072
mk: Don't require pandoc to run rustdoc
rustdoc: Show type parameters on external paths

This removes the internal type representation of an `External` type and instead
relies on passing around DefId structures and interpreting them accordingly.

Progress on #9539, but there's still the problem of a crate => url mapping.
auto merge of #9577 : alexcrichton/rust/rustdoc, r=cmr

They're getting smaller each time though!

The highlight of this round is source files in documentation. Still trying to figure out the best syntax-highlighting solution.
tutorial: rewrite the sections on boxes/moves
auto merge of #9542 : pnkfelix/rust/fsk-fix-issue-9531, r=thestinger

r? strcat 

(please double check that it fixes things on your chroot, if possible, before approval)

Fix #9531
auto merge of #9589 : thestinger/rust/tutorial, r=alexcrichton
Don't redirect output in rustpkg test

Previously, if tests failed, you'd only get stderr which isn't very
useful, especially if the failure didn't happen directly in a test
function (e.g None.unwrap()).
Put a newline after each logging message
auto merge of #9603 : sfackler/rust/rustpkg-test, r=catamorphism

Previously, if tests failed, you'd only get stderr which isn't very
useful, especially if the failure didn't happen directly in a test
function (e.g None.unwrap()).
Require &Crate instead of @Crate

This help enable some later refactorings.
Remove all usage of @ast::Crate
auto merge of #9609 : alexcrichton/rust/fix-logging-newline, r=catamorphism

Forgot to do this when I was refactoring logging :(
auto merge of #9612 : alexcrichton/rust/rc-crate2, r=huonw

This patch exposes actual ownership of an `ast::Crate` structure so it's not implicitly copied and reference counted via `@`.

The main purpose for this patch was to get rid of the massive spike in memory during the start of the compiler (this can be seen on isrustfastyet). The reason that this spike exists is that during `phase_2` we're creating many copies of the crate by folding. Because these are reference counted, all instances of the old crates aren't dropped until the end of the function, which is why so much memory is accumulated.

This patch exposes true ownership of the crate, meaning that it will be destroyed ASAP when requested. There are no code changes except for dealing with actual ownership of the crate. The large spike is then avoided: http://i.imgur.com/IO3NENy.png

This shouldn't help our overall memory usage (that still is the highest at the end), but if we ever manage to bring that down it should help us not have a 1GB spike at the beginning of compilation.

(This was to un-stuck bors (hopefully).)
rustc: Convert lang_items hashmap to use &'static str keys
rustc: Convert lang_item to use an iterator