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.
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.
auto merge of #12694 : thestinger/rust/mut_iter, r=huonw

This become `Pod` when it was switched to using marker types.
mark the `map` method on Vec<T> as deprecated

This exists for the sake of compatibility during the ~[T] -> Vec<T>
transition. It will be removed in the future.
auto merge of #12697 : thestinger/rust/vec, r=huonw

This exists for the sake of compatibility during the ~[T] -> Vec<T>
transition. It will be removed in the future.
Expand nested items within a backtrace.

Fixes a regression from #4913 which causes items to be exanded with spans lacking expn_info from the context's current backtrace.
Rename all variables that have uppercase characters in their names to use only lowercase characters
Add lint for variable names that contain uppercase characters
Rename struct fields with uppercase characters in their names to use lowercase
auto merge of #12688 : alexcrichton/rust/fix-some-link-args, r=brson

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.
auto merge of #12671 : nick29581/rust/expand, r=sfackler

Fixes a regression from #4913 which causes items to be exanded with spans lacking expn_info from the context's current backtrace.
Allow uppercase_variables in libstd/libc.rs