Allow mutable slices in statics.

Fixes #11411
rustc: Move mut slice check to `check_static`

This is a follow-up patch that moves the mut slice check to the recently
added `check_static`

Closes #11411
`strdup_uniq` doesn't have to be `pub`.
rustc: disallow trailing parentheses for nullary enum variants

Fixes #12560
auto merge of #12957 : lkuper/rust/docsprint, r=alexcrichton
auto merge of #12742 : FlaPer87/rust/issue-11411-static-mut-slice, r=nikomatsakis

This PR enables the use of mutable slices in *mutable* static items. The work was started by @xales and I added a follow-up commit that moves the *immutable* restriction to the recently added `check_static`

Closes #11411
auto merge of #12935 : lbonn/rust/nullenum, r=alexcrichton

Fix for #12560
Fix `ty_trait` variance inference bug

that variance inference pass doesn't take lifetime parameters and
mutability of a trait reference into consideration.

Note that `libserialize` won't compile duo to additional lifetime
variance constraints; the fix for that is not part of the commit. One
still gets a working stage1 rustc, though.
Incorporate variance into typeck

Implements RFC for tweaked variance inference rules.

Note the `libarena` won't compile as discussed in IRC. It makes an
interesting case for RFC so the fix for it is not included. A working
stage1 rustc can be built without the fix anyway.