librustc: When checking static method calls to unboxed closures, look at
the right trait and take the method name into account.

Closes #16599.
librustc: Fix bogus logic for static calls to unboxed closures in the
expression use visitor.

Closes #16166.
auto merge of #16631 : pcwalton/rust/unboxed-closures-wrong-trait, r=huonw

the right trait and take the method name into account.

Closes #16599.

r? @huonw
auto merge of #16632 : pcwalton/rust/unboxed-closures-euv, r=luqmana

expression use visitor.

Closes #16166.

r? @huonw
Implement flexible target specification

Removes all target-specific knowledge from rustc. Some targets have changed
during this, but none of these should be very visible outside of
cross-compilation. The changes make our targets more consistent.

iX86-unknown-linux-gnu is now only available as i686-unknown-linux-gnu. We
used to accept any value of X greater than 1. i686 was released in 1995, and
should encompass the bare nimimum of what Rust supports on x86 CPUs.

The only two windows targets are now i686-pc-windows-gnu and
x86_64-pc-windows-gnu.

The iOS target has been renamed from arm-apple-ios to arm-apple-darwin.

A complete list of the targets we accept now:

arm-apple-darwin
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf

i686-apple-darwin
i686-pc-windows-gnu
i686-unknown-freebsd
i686-unknown-linux-gnu

mips-unknown-linux-gnu
mipsel-unknown-linux-gnu

x86_64-apple-darwin
x86_64-unknown-freebsd
x86_64-unknown-linux-gnu
x86_64-pc-windows-gnu

Closes #16093

[breaking-change]

Conflicts:
	src/librustc/back/link.rs
	src/librustc/middle/trans/cabi_x86.rs
	src/librustc_back/archive.rs
Windows (and not only) fixes