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.
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
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.