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
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]
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.
Remove libdebug and update tests.
libsyntax: Remove all uses of {:?}.
librustc: Remove all uses of {:?}.
libstd: Remove all uses of {:?}.
liballoc: Remove all uses of {:?}.
librustdoc: Remove all uses of {:?}.
libcollections: Remove all uses of {:?}.
libnative: Remove all uses of {:?}.
librustc: Remove visit_tydesc intrinsic.
librustc: Stop generating visit glue and remove from TyDesc.
librustc: Remove trans::reflect and the opaque and ty_visitor lang items.
libsyntax: Don't accept :? as a format specifier.
librustc: Remove special case for old reflection visitor.
auto merge of #18064 : luqmana/rust/remove-reflection, r=nick29581

Out goes reflection! This means your code will break if you used the `:?` format specifier, anything else from libdebug, or the `visit_tydesc` intrinsic directly.

Closes #18046.

[breaking-change]