rustc: Start accepting `*const T`

This does not yet change the compiler and libraries from `*T` to `*const T` as
it will require a snapshot to do so.

cc #7362
rustc: Disable rpath settings by default

This commit disables rustc's emission of rpath attributes into dynamic libraries
and executables by default. The functionality is still preserved, but it must
now be manually enabled via a `-C rpath` flag.

This involved a few changes to the local build system:

* --disable-rpath is now the default configure option
* Makefiles now prefer our own LD_LIBRARY_PATH over the user's LD_LIBRARY_PATH
  in order to support building rust with rust already installed.
* The compiletest program was taught to correctly pass through the aux dir as a
  component of LD_LIBRARY_PATH in more situations.

The major impact of this change is that neither rustdoc nor rustc will work
out-of-the-box in all situations because they are dynamically linked. It must be
arranged to ensure that the libraries of a rust installation are part of the
LD_LIBRARY_PATH. The default installation paths for all platforms ensure this,
but if an installation is in a nonstandard location, then configuration may be
necessary.

Additionally, for all developers of rustc, it will no longer be possible to run
$target/stageN/bin/rustc out-of-the-box. The old behavior can be regained
through the `--enable-rpath` option to the configure script.

This change brings linux/mac installations in line with windows installations
where rpath is not possible.

Closes #11747
[breaking-change]
rustdoc: show default type parameters in generics

fix #12291
Refactor the unification code and rejuvenate the unit test
infrastructure that has been accidentally left out of the build
for a rather long time (it was still using `@DVec`!)
Remove duplicated test files

Even if they used to test different things in the past, they are
now identical to other files.

Closes #11496
libsyntax: don't allow enum structs with no fields

Unit-like structs are written as `struct Foo;`, but we erroneously
accepted `struct Foo();` and took it to mean the same thing. Now we
don't, so use the `struct Foo;` form!

[breaking-change]
Change /bin/env to /usr/bin/env in helper python script, as it is more portable
Register new snapshots
auto merge of #15089 : tomjakubowski/rust/rustdoc-default-typarams-12291, r=alexcrichton

fix #12291
test: readd TMPDIR to LD_LIBRARY_PATH for run-make

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!).
Add regression test for ICE from issue 10846.
auto merge of #15098 : ben0x539/rust/nullary-tuple-struct, r=pcwalton

Reject `struct Foo();` to fix #15095.
auto merge of #15100 : rapha/rust/master, r=alexcrichton

/usr/bin/env appears to be more portable.
Allow trailing comma in `concat!`

(And in other extensions implemented with `get_exprs_from_tts` function).
auto merge of #15106 : Sawyer47/rust/rm-duplicated-tests, r=alexcrichton

Even if they used to test different things in the past, they are
now identical to other files.

Closes #11496
rustc: catch non-trait methods before typeck.

Closes #3973.
rustc: catch `impl X for Y` where X is not a trait in resolve.
auto merge of #14974 : Ryman/rust/non_trait_method, r=alexcrichton

Closes #3973.
Docs: tutorial: Remove a couple references to `~T`
libsyntax: Disallow struct literals after `if`, `while`, `match`, and
`for...in`.

Closes #14803.

If you used a structure literal after one of these keywords, surround it
in parentheses.

[breaking-change]