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

Fixes #13490.
Change rustc to say `array` instead of `vector`
core: Make TwoWaySearcher reset its prefix memory when shifting by byteset

Closes #16878.
Add many comments to TwoWaySearcher.
Add some tests for closures that return `!`
Change method lookup to require invariance for mutable references

Fixes #17033.
Fixes #15965.
ignore uninitialized submodules when checking if ./configure should be re-run
fixes for Box<[T]>

The pointer in the slice must not be null, because enum representations
make that assumption. The `exchange_malloc` function returns a non-null
sentinel for the zero size case, and it must not be passed to the
`exchange_free` lang item.

Since the length is always equal to the true capacity, a branch on the
length is enough for most types. Slices of zero size types are
statically special cased to never attempt deallocation. This is the same
implementation as `Vec<T>`.

Closes #14395
Add links to forums in README.md, including discuss.rust-lang.org
Fix snapshot.py for win64
Fix naming of windows installer
Implement tuple and tuple struct indexing

This allows code to access the fields of tuples and tuple structs:

    let x = (1i, 2i);
    assert_eq!(x.1, 2);

    struct Point(int, int);
    let origin = Point(0, 0);
    assert_eq!(origin.0, 0);
    assert_eq!(origin.1, 0);
Avoid ever constructing cyclic types in the first place, rather than detecting them in resolve. This simplifies logic elsewhere in the compiler. cc #5527
Be explicit with rustdoc.

I missed some annotations, and some were in a different style.
Prefer lualatex, xelatex, pdflatex, in that order. #12804
librustc: Obsolete the old external crate renaming syntax.

Instead of `extern crate foo = bar`, write `extern crate bar as foo`.
Instead of `extern crate baz = "quux"`, write `extern crate "quux" as
baz`.

Closes #16461.

[breaking-change]
auto merge of #17048 : pcwalton/rust/remove-old-import-renaming-syntax, r=brson

Instead of `extern crate foo = bar`, write `extern crate bar as foo`.
Instead of `extern crate baz = "quux"`, write `extern crate "quux" as
baz`.

Closes #16461.

[breaking-change]

r? @brson
Don't ICE on macros with -Z show-span

Closes #17115
auto merge of #17108 : steveklabnik/rust/explicitness, r=alexcrichton

I missed some annotations, and some were in a different style.
micro-optimize dynamic allocation alignment

Previously, some parts of this optimization were impossible because the
alignment passed to the free function was not correct. That was fully
fixed by #17012.

Closes #17092