Replace all references to "Win32" with "Windows".

For historical reasons, "Win32" has been used in Rust codebase to mean "Windows OS in general".
This is confusing, especially now, that Rust supports Win64 builds.

[breaking-change]
Replace #[cfg(target_os = "win32")] with #[cfg(target_os = "windows")]
Replace "ignore-win32" in tests with "ignore-windows"
Introduce the cargo run command earlier (squashed)
vim: Stop setting conceallevel in the syntax file

We shouldn't be setting conceallevel in the syntax file. Besides not
being able to undo this if we switch to another syntax later, it also
interferes with embedding rust in other filetypes (such as markdown).

Instead, set it in the ftplugin, where it belongs.
Make it pass the pretty-printer test.
Followup to PR #16477: a run-pass regression test for Issue #15750.
libsyntax: Accept `use foo as bar;` in lieu of `use bar as foo;`

The old syntax will be removed after a snapshot.

RFC #47.

Issue #16461.
auto merge of #16468 : pcwalton/rust/as-renaming-import, r=alexcrichton

The old syntax will be removed after a snapshot.

RFC #47.

Issue #16461.

r? @brson
librustc: Implement simple `where` clauses.

These `where` clauses are accepted everywhere generics are currently
accepted and desugar during type collection to the type parameter bounds
we have today.

A new keyword, `where`, has been added. Therefore, this is a breaking
change. Change uses of `where` to other identifiers.

[breaking-change]
auto merge of #16474 : MatejLach/rust/cargorun_fix, r=steveklabnik

This fixes #16451.

While moving things around, I also removed a bunch of unnecessary whitespace, however I can put it back in if that's undesired. 

Thanks.
auto merge of #16435 : vadimcn/rust/windows, r=pcwalton

Using "win32" to mean "Windows" is confusing, especially now, that Rust supports win64 builds.
Let's call spade a spade.
auto merge of #16486 : kballard/rust/vim_conceal, r=chris

We shouldn't be setting conceallevel in the syntax file. Besides not
being able to undo this if we switch to another syntax later, it also
interferes with embedding rust in other filetypes (such as markdown).

Instead, set it in the ftplugin, where it belongs.
auto merge of #16424 : pcwalton/rust/where-clauses, r=nikomatsakis

These `where` clauses are accepted everywhere generics are currently
accepted and desugar during type collection to the type parameter bounds
we have today.

A new keyword, `where`, has been added. Therefore, this is a breaking
change. Change uses of `where` to other identifiers.

[breaking-change]

r? @nikomatsakis (or whoever)
auto merge of #16494 : pnkfelix/rust/fsk-quotstx-followup, r=alexcrichton

Followup to PR #16477: a run-pass regression test for Issue #15750.
librustc: Forbid external crates, imports, and/or items from being
declared with the same name in the same scope.

This breaks several common patterns. First are unused imports:

    use foo::bar;
    use baz::bar;

Change this code to the following:

    use baz::bar;

Second, this patch breaks globs that import names that are shadowed by
subsequent imports. For example:

    use foo::*; // including `bar`
    use baz::bar;

Change this code to remove the glob:

    use foo::{boo, quux};
    use baz::bar;

Or qualify all uses of `bar`:

    use foo::{boo, quux};
    use baz;

    ... baz::bar ...

Finally, this patch breaks code that, at top level, explicitly imports
`std` and doesn't disable the prelude.

    extern crate std;

Because the prelude imports `std` implicitly, there is no need to
explicitly import it; just remove such directives.

The old behavior can be opted into via the `import_shadowing` feature
gate. Use of this feature gate is discouraged.

This implements RFC #116.

Closes #16464.

[breaking-change]