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.
Fix several issues with the struct and enum representability-checking logic.
Tweak copy and formatting of Tasks guide
bench: Improve the spectralnorm shootout benchmark

This improves the spectralnorm shootout benchmark through a few vectors after
looking at the leading C implementation:

* The simd-based f64x2 is now used to parallelize a few computations
* RWLock usage has been removed. A custom `parallel` function was added as a
  form of stack-based fork-join parallelism. I found that the contention on the
  locks was high as well as hindering other optimizations.

This does, however, introduce one `unsafe` block into the benchmarks, which
previously had none.

In terms of timings, the before and after numbers are:

```
$ time ./shootout-spectralnorm-before
./shootout-spectralnorm-before  2.07s user 0.71s system 324% cpu 0.857 total
$ time ./shootout-spectralnorm-before 5500
./shootout-spectralnorm-before 5500  11.88s user 1.13s system 459% cpu 2.830 total
$ time ./shootout-spectralnorm-after
./shootout-spectralnorm-after  0.58s user 0.01s system 280% cpu 0.210 tota
$ time ./shootout-spectralnorm-after 5500
./shootout-spectralnorm-after 5500  3.55s user 0.01s system 455% cpu 0.783 total
```
Improve the error message for missing else clauses in if expressions
Only consider impliciy unboxed closure impl if the obligation is
actually for `Fn`, `FnMut`, or `FnOnce`.

Fixes #18019
Change _rhs to _index.

Because var is provided as an index not a right hand side.
Remove unnecessary ::core::ops::

It shows error: failed to resolve. Maybe a missing `extern crate core`
anyway.
Change `from` and `to` to `_from` and `_to`

This to avoid warning: unused variable: `from`,
#[warn(unused_variable)] on by default.
improve shootout-reverse-complement.rs using unsafe code
Fix the description of raw byte string literals
export *IntSlice in libcollections
Renamed AsciiStr::to_lower and AsciiStr::to_upper
Now AsciiStr::to_lowercase and AsciiStr::to_uppercase to match Ascii trait.
[breaking-change]
impl Buffer for ChanReader
shootout-reverse-complement: reimplement TwoSideIter using pointers
auto merge of #18015 : jakub-/rust/issue-4201, r=pcwalton

Closes #4201.
auto merge of #18067 : mahkoh/rust/immutableintslice, r=alexcrichton

There is also a second commit that adds them to the prelude.
Removes useless confs from bitv.rs

Linked to #18009
Remove libdebug and update tests.