Allow `!` as the return type of proc/closure literals

Fixes #13490.
Add some tests for closures that return `!`
Improve memory usage of libsyntax
Replaces some usage of `.to_string()` with `.into_string()`

Signed-off-by: Peter Atashian <retep998@gmail.com>
doc: that felt like it needed a stronger break than what comma provides

Remove trailing whitespace while at it
Fix issue #17216

The cleanup scope of for loop bindings should translated when
popped to ensure resources are not leaked.
Add regression test for issue #17216
Display the doc-block toggle on everything again.

This needs a clone otherwise each successive insertion detaches `toggle`
from the previous position.

Fixes #17125.
inlines contains in bitflags!

Closes #17210
Separate static item recursion check into its own pass

This new pass is run before type checking so that recursive items
are detected beforehand.  This prevents going into an infinite
recursion during type checking when a recursive item is used in
an array type.

As a bonus, use `span_err` instead of `span_fatal` so multiple
errors can be reported.

Closes issue #17252
Add regression test for issue #17252
Fix two typos
Align with _mut conventions

As per [RFC
52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md),
use `_mut` suffixes to mark mutable variants, and `into_iter` for moving
iterators.

[breaking-change]
auto merge of #17213 : mo/rust/fix_typos, r=aturon
Fallout from renaming
auto merge of #17268 : aturon/rust/mut-conventions, r=alexcrichton

As per [RFC 52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md), use `_mut` suffixes to mark mutable variants, and `into_iter` for moving iterators. Additional details and motivation in the RFC.

Note that the iterator *type* names are not changed by this RFC; those are awaiting a separate RFC for standardization.

Closes #13660
Closes #16810

[breaking-change]
auto merge of #17223 : retep998/rust/into_string, r=huonw

Replaces some usage of `.to_string()` with `.into_string()`
auto merge of #17227 : tshepang/rust/stronger-break, r=aturon

Remove trailing whitespace while at it
move most of front to libsyntax
move std_inject to libsyntax
move feature_gate to libsyntax