Add /doc/{flate,rustdoc} to .gitignore
Minor fix to docs.
std: reduce the generic code instantiated by fail!().

This splits the vast majority of the code path taken by
`fail!()` (`begin_unwind`) into a separate non-generic inline(never)
function, so that uses of `fail!()` only monomorphise a small amount of
code, reducing code bloat and making very small crates compile faster.
std: add begin_unwind_fmt that reduces codesize for formatted fail!().

This ends up saving a single `call` instruction in the optimised code,
but saves a few hundred lines of non-optimised IR for `fn main() {
fail!("foo {}", "bar"); }` (comparing against the minimal generic
baseline from the parent commit).
Add .rs- instead of .rc-extension to LLVM module name
Feature gate #[simd]

Fixes #11721
debuginfo: Fix name attribute for DWARF compile units
Depend on libnative when testing

The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
auto merge of #11841 : huonw/rust/noinline-fail, r=alexcrichton

In two ways:
- for a plain `fail!(a)` we make the generic part of `begin_unwind` as small as possible (makes `fn main() { fail!() }` compile 2-3x faster, due to less monomorphisation bloat)
- for `fail!("format {}", "string")`, we avoid touching the generics completely by doing the formatting in a specialised function, which (with optimisations) saves a function call at the call-site of `fail!`. (This one has significantly less benefit than the first.)
Fix bug: metadata for struct constructor function needs to encode info
on its generic type parameters.

Test case to follow.
test case for issue #10031.
Removed take_glue from tydesc, inlining the equivalent refcount increment code instead.
auto merge of #11723 : eddyb/rust/more-trans-cleanup, r=pcwalton
auto merge of #11846 : michaelwoerister/rust/cu_name, r=pcwalton

Fixes #11600
auto merge of #11847 : alexcrichton/rust/fix-test-deps, r=pcwalton

The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
syntax: make deriving have slightly less cryptic error messages.

This unfortunately changes an error like

    error: mismatched types: expected `&&NotClone` but found `&NotClone`

into

    error: type `NotClone` does not implement any method in scope named `clone`
can borrow mut in proc Fixes #10617
std: comment about OOM & allocs in begin_unwind_fmt.

Follow-up to #11841 which added this function.
auto merge of #11626 : nickdesaulniers/rust/issue10617, r=alexcrichton

#10617
auto merge of #11826 : huonw/rust/7621-deriving-errors, r=alexcrichton

cc #7621.

See the commit message. I'm not sure if we should merge this now, or wait until we can write `Clone::clone(x)` which will directly solve the above issue with perfect error messages.