Improve the error message for missing else clauses in if expressions
librustc: Improve method autoderef/deref/index behavior more, and enable
`IndexMut` on mutable vectors.

This fixes a bug whereby the mutability fixups for method behavior were
not kicking in after autoderef failed to happen at any level. It also
adds support for `Index` to the fixer-upper.

Closes #12825.
export *IntSlice in libcollections
auto merge of #17934 : pcwalton/rust/better-autoderef-fixup, r=pnkfelix

librustc: Improve method autoderef/deref/index behavior more, and enable IndexMut on mutable vectors.

This fixes a bug whereby the mutability fixups for method behavior were
not kicking in after autoderef failed to happen at any level. It also
adds support for `Index` to the fixer-upper.

Closes #12825.

r? @pnkfelix
auto merge of #18015 : jakub-/rust/issue-4201, r=pcwalton

Closes #4201.
auto merge of #18067 : mahkoh/rust/immutableintslice, r=alexcrichton

There is also a second commit that adds them to the prelude.
Remove libdebug and update tests.
libsyntax: Remove all uses of {:?}.
librustc: Remove all uses of {:?}.
libstd: Remove all uses of {:?}.
liballoc: Remove all uses of {:?}.
librustdoc: Remove all uses of {:?}.
libcollections: Remove all uses of {:?}.
libnative: Remove all uses of {:?}.
librustc: Remove visit_tydesc intrinsic.
librustc: Stop generating visit glue and remove from TyDesc.
librustc: Remove trans::reflect and the opaque and ty_visitor lang items.
libsyntax: Don't accept :? as a format specifier.
librustc: Remove special case for old reflection visitor.
auto merge of #18064 : luqmana/rust/remove-reflection, r=nick29581

Out goes reflection! This means your code will break if you used the `:?` format specifier, anything else from libdebug, or the `visit_tydesc` intrinsic directly.

Closes #18046.

[breaking-change]