Make task_rng() return @mut R instead of @@mut R
iterator: Add `IteratorUtil::flat_map_` method

flat_map_ produces an iterator that maps each element to an iterator,
and yields the elements of the produced iterators.

This is the monadic bind :: M a -> (a -> M b) -> M b  for iterators.

Named just like the vec method, but with a trailing underline until the
method resolution bug is resolved.
Deny common lints by default for lib{std,extra}
Stop passing --disable-threads to LLVM
auto merge of #7393 : alexcrichton/rust/enable-threads, r=catamorphism

Closes #7071
auto merge of #7113 : alexcrichton/rust/banned-warnings, r=cmr

Reopening of #7031, Closes #6963

I imagine though that this will bounce in bors once or twice... Because attributes can't be cfg(stage0)'d off, there's temporarily a lot of new stage0/stage1+ code.
auto merge of #7216 : kballard/rust/task_rng, r=brson
auto merge of #7255 : michaelwoerister/rust/debuginfo, r=jdm

This PR contains no real code changes. Just some documentation additions in the form of comments and some internal reordering of functions within debuginfo.rs.
driver: perform stripping before and after macro expansion.

This allows macros to both be conditionally defined, and expand
to items with #[cfg]'s.
auto merge of #7297 : huonw/rust/strip-expand-strip, r=cmr

This allows macros to both be conditionally defined, and expand
to items with #[cfg]'s.

This seems to have a performance improvement, e.g. for `std`:

```
# Before 
time: 1.660 s   expansion
time: 0.125 s   configuration
# After
time: 0.080 s   configuration 1
time: 1.127 s   expansion
time: 0.132 s   configuration 2
```

And for `extra`:

```
# Before
time: 0.593 s   expansion
time: 0.062 s   configuration
# After
time: 0.047 s   configuration 1
time: 0.147 s   expansion
time: 0.058 s   configuration 2
```

(This seems a little peculiar, but it is possibly because the expansion AST traversal is very slow, so removing as much as possible as early as possible has big benefits.)
auto merge of #7345 : blake2-ppc/rust/iterator-flat-map, r=thestinger

flat_map_ produces an iterator that maps each element to an iterator,
and yields the elements of the produced iterators.

This is the monadic bind :: M a -> (a -> M b) -> M b  for iterators.

Named just like the vec method, but with a trailing underline until the
method resolution bug is resolved.

We discussed the name chain_map, but I decided to go with flat_map_ for consistency with vec.

Since it.map(f).flatten()  would be the same as it.flat_map(f), we could choose
to just implement a flatten method instead. Either way the possibilities are the same but flat_map is more convenient.
Extended test cases for struct debug information.
Added test cases for different kinds of padding (simple-struct.rs)
Added test cases for nested structs (struct-in-struct.rs)
Fixed debug information bug regarding struct padding.
debuginfo: Added test cases for tuples.
debuginfo: Added test cases for tuples contained in structs.
debuginfo: Many little formatting improvements.
debuginfo: Made test cases use correct naming convention for variables.
debuginfo: Added test case for local variable scopes.
debuginfo: Added test case for structs with destructor.
debuginfo: Replaced many instances of @ with &.