auto merge of #15113 : pnkfelix/rust/fsk-add-regression-test-for-ice-from-10846, r=alexcrichton

Includes a bit more comments than usual for a regression test; I felt like documenting Niko's diagnosis of the original problem here. 

Fix #15111 

r? anyone.
librustc: Remove outdated reference to `~` and `@`

Fix #15052
auto merge of #14963 : w3ln4/rust/master, r=alexcrichton

The aim of these changes is not working out a generic bi-endianness architectures support but to allow people develop for little endian MIPS machines (issue #7190).
auto merge of #15071 : tomjakubowski/rust/fix-15052, r=alexcrichton

Fix #15052
auto merge of #15114 : ben0x539/rust/run-make-libpath, r=alexcrichton

It was accidentally removed in #15006 and that somehow got past the
build bots, causing `src/test/run-make/c-dynamic-dylib` to fail on at
least my linux system.

This resolves #15103 (thanks to @alexcrichton!).
Move lint.rs out of middle

We're going to have more modules under lint, and the paths get unwieldy. We
also plan to have lints run at multiple points in the compilation pipeline.
Move lint infrastructure and individual lints into separate files
Rename lint::Lint to lint::LintId
Convert lints to a trait-based infrastructure

The immediate benefits are

* moving the state specific to a single lint out of Context, and
* replacing the soup of function calls in the Visitor impl with
  more structured control flow

But this is also a step towards loadable lints.
Replace enum LintId with an extensible alternative
Store the registered lints in the Session
Clean up and document the public lint API

Also change some code formatting.

lint::builtin becomes a sibling of lint::context in order to ensure that lints
implemented there use the same public API as lint plugins.
Stop using Default for initializing builtin lints

It wasn't a very appropriate use of the trait. Instead, just enumerate
unit structs and those with a `fn new()` separately.
Run lint passes using the Option dance instead of RefCells
Use names in Lint structs in an ASCII-case-insensitive way

In preparation for the next commit.
Convert builtin lints to uppercase names for style consistency
Rework lint attr parsing and use it in middle::dead
Make the crate and its exported items available in the lint context
Drop the ExportedItems argument from LintPass::check_crate

None of the builtin lints use this, and it's now available through the Context.
Reindent function call continuations, and other style fixes