rustdoc: Inline documentation of `pub use`

This commit teaches rustdoc to inline the documentation for the destination of a
`pub use` statement across crate boundaries. This is intended for the standard
library's facade to show the fact that the facade is just an implementation
detail rather than the api of the standard library itself.

This starts out by inlining traits and functions, but more items will come soon.
The current drawback of this system is that hyperlinks across crates sill go to
the original item's definition rather than the reexported location.
std: Add doc(noinline) to the prelude reexports
rustdoc: Start inlining structs across crates
rustdoc: Inline enums across crates
rustdoc: Don't show reexported enum variants

For now just assume that the enum type itself is reexported.
rustdoc: Inline argument names of foreign methods
rustdoc: Inline names of function arguments
rustdoc: Inline reexported modules
rustdoc: Use csearch for impl loading

The normal analysis passes aren't guaranteed to have loaded all impls, so use
the csearch methods directly to load impls.
rustc: Encode module attributes

This will allow for rustdoc to pick up the documentation on the other end.
rustdoc: Prevent a segfault when using markdown

The field passed from markdown could sometimes be null, and it wasn't properly
handled.
rustdoc: Link to local reexportations of items

Within the documentation for a crate, all hyperlinks to reexported items don't
go across crates, but rather to the items in the crate itself. This will allow
references to Option in the standard library to link to the standard library's
Option, instead of libcore's.

This does mean that other crate's links for Option will still link to libcore's
Option.
rustdoc: Fix rendering of the 'static bound
rustdoc: Get [src] links working for inlined dox

These links work by hyperlinking back to the actual documentation page with a
query parameter which will be recognized and then auto-click the appropriate
[src] link.
doc: Document the new #[doc(no_inline)] attribute
rustdoc: Move inlining to its own module
auto merge of #14391 : alexcrichton/rust/more-rustdoc-inline, r=huonw

As part of the libstd facade (cc #13851), rustdoc is taught to inline documentation across crate boundaries through the usage of a `pub use` statement. This is done to allow libstd to maintain the facade that it is a standalone library with a defined public interface (allowing us to shuffle around what's underneath it).

A preview is available at http://people.mozilla.org/~acrichton/doc/std/index.html