Avoid building as root with `sudo make install`

When running `sudo make install`, we only want to run the actual install
as root, the building of the documentation and the distribution folder
should happen as the non-root user.

Related to #13728.
Add help diagnostic messages

This adds ‘help’ diagnostic messages to rustc. This is used for anything that
provides help to the user, particularly the `--explain` messages that were
previously integrated into the relevant error message.
Changed `extern crate foo as bar;` error message

Closes #17709
Add rustup.sh to the repo

Just to have it somewhere to point to. Updating it will not
automatically update the one on static.rust-lang.org.
readme: Link 'Using' wiki page instead of 'Getting started'.

The Windows-specific instruction under 'Quick Start' linked the wiki article on getting started developing Rust itself, but the quick start is just about obtaining a working Rust installation. The actual wiki page with Windows-specific instructions was difficult to find.
Fix several issues with the struct and enum representability-checking logic.
In sieve example, end iteration sooner

The Sieve algorithm only requires checking all elements up to and including the square root of the maximum prime you're looking for. After that, the remaining elements are guaranteed to be prime.
Update README.md

Added 64-bit Windows support to the list of platforms. Support for 64-bit Windows was added in Rust 0.12.0. See  https://mail.mozilla.org/pipermail/rust-dev/2014-October/011267.html for the release notes.
Teach libsyntax about `while let`
Desugar `while let` into `loop { match { ... } }`
Move `while let` behind `while_let` feature gate
Handle `while let` desugaring
Add tests for `while let`
Add `while let` to the reference

Closes #17687
Use explicit case rather than catch-all
Remove `virtual` structs from the language
Remove `virtual` struct tests
Remove `virtual` structs from the reference
Tweak copy and formatting of Tasks guide
fix shootout-mandelbrot to make it pass the shootout test