rustc: Don't deduplicate libraries linked to

Linker argument order with respect to libraries is important enough that we
shouldn't be attempting to filter out libraries getting passed through to the
linker. When linking with a native library that has multiple dependant native
libraries, it's useful to have control over the link argument order.
syntax: make match arms store the expr directly.

Previously `ast::Arm` was always storing a single `ast::Expr` wrapped in an
`ast::Block` (for historical reasons, AIUI), so we might as just store
that expr directly.

Closes #3085.
Implemented checked arithmetic for Big(U)Ints
std: add reserve_additional and an Extendable impl to Vec.
auto merge of #12673 : huonw/rust/extendable-vec, r=Aatch

std: add reserve_additional and an Extendable impl to Vec.
Register new snapshots

This should fix the travis builds.
auto merge of #12674 : alexcrichton/rust/snapshots, r=Aatch

This should fix the travis builds.
auto merge of #12672 : korenchkin/rust/checked-bigint, r=alexcrichton
auto merge of #12669 : huonw/rust/de-block-arms, r=alexcrichton

syntax: make match arms store the expr directly.

Previously `ast::Arm` was always storing a single `ast::Expr` wrapped in an
`ast::Block` (for historical reasons, AIUI), so we might as just store
that expr directly.

Closes #3085.
rustc: Streamline error messages for i18n, using `plural` whenever possible.
auto merge of #12678 : lifthrasiir/rust/pluralize, r=alexcrichton

While we are not yet ready for compiler i18n, this also keeps the error handling code clean. The set of altered error messages was obtained by grepping for `"s"` and `(s)`, so there might be some missing messages.
Add the DerefImm and DerefMut traits.
Implement DerefImm for Rc and DerefImm/DerefMut for RefCell's Ref/RefMut.
rustdoc: tweak highlighting
doc: use the newer favicon
auto merge of #12649 : adrientetar/rust/highlight, r=alexcrichton

[Here is](http://adrientetar.legtux.org/cached/rust-doc/to_str.rs.html) an example.

Closes #12648.

@alexcrichton, @huonw
Cleaned up `std::any`

- Added `TraitObject` representation to `std::raw`.
- Added doc to `std::raw`.
- Removed `Any::as_void_ptr()` and `Any::as_mut_void_ptr()`
  methods as they are uneccessary now after the removal of
  headers on owned boxes. This reduces the number of virtual calls needed.
- Made the `..Ext` implementations work directly with the repr of
  a trait object.
- Removed `Any`-related traits from the prelude.

- Added bench for `Any`
auto merge of #12667 : Kimundi/rust/any_improv, r=cmr

- Added `TraitObject` representation to `std::raw`.
- Added doc to `std::raw`.
- Removed `Any::as_void_ptr()` and `Any::as_mut_void_ptr()`
  methods as they are uneccessary now after the removal of
  headers on owned boxes. This reduces the number of virtual calls needed from 2 to 1.
- Made the `..Ext` implementations work directly with the repr of
  a trait object.
- Removed `Any`-related traits from the prelude.
- Added bench.

Bench before/after:
~~~
7 ns/iter (+/- 0)
4 ns/iter (+/- 0)
~~~
Allow overloading explicit dereferences.
make `MutItems` iterator sound again

This become `Pod` when it was switched to using marker types.