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.
Demote self to an (almost) regular argument and remove the env param.
Fixes #10667 and closes #10259.
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 #11595 : eddyb/rust/env-et-self-no-more, r=nikomatsakis

Non-exhaustive change list:
* `self` is now present in argument lists (modulo type-checking code I don't trust myself to refactor)
* methods have the same calling convention as bare functions (including the self argument)
* the env param is gone from all bare functions (and methods), only used by closures and `proc`s
* bare functions can only be coerced to closures and `proc`s if they are statically resolved, as they now require creating a wrapper specific to that function, to avoid indirect wrappers (equivalent to `impl<..Args, Ret> Fn<..Args, Ret> for fn(..Args) -> Ret`) that might not be optimizable by LLVM and don't work for `proc`s
* refactored some `trans::closure` code, leading to the removal of `trans::glue::make_free_glue` and `ty_opaque_closure_ptr`
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.