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
Add parser for `#[repr(...)]`; nothing uses it yet.

Also export enum attrs into metadata, and add a convenient interface for
obtaining the repr hint from either a local or remote definition.
Initial implementation of enum discrimnant sizing.

Allows an enum with a discriminant to use any of the primitive integer
types to store it.  By default the smallest usable type is chosen, but
this can be overridden with an attribute: `#[repr(int)]` etc., or
`#[repr(C)]` to match the target's C ABI for the equivalent C enum.

This commit breaks a few things, due to transmutes that now no longer
match in size, or u8 enums being passed to C that expects int, or
reflection; later commits on this branch fix them.
Lint non-FFI-safe enums.
Add repr attributes in various places that need them.
Check repr attribute consistency at check time, not translation.

Note that raising an error during trans doesn't stop the compile or cause
rustc to exit with a failure status, currently, so this is of more than
cosmetic importance.
Unbreak the debuginfo tests.

The variant used in debug-info/method-on-enum.rs had its layout changed
by the smaller discriminant, so that the `u32` no longer overlaps both
of the `u16`s, and thus the debugger is printing partially uninitialized
data when it prints the wrong variant.

Thus, the test runner is modified to accept wildcards (using a string
that should be unlikely to occur literally), to allow for this.
Assorted cleanups suggested by reviewers.
Adjust reflection for the possibility of discriminants larger than int.

Not only can discriminants be smaller than int now, but they can be
larger than int on 32-bit targets.  This has obvious implications for the
reflection interface.  Without this change, things fail with LLVM
assertions when we try to "extend" i64 to i32.
Add tests for enum discriminant sizing.