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.
Add a memoize! macro and use it throughout rustc
Make memoize!() a function instead
auto merge of #17983 : jakub-/rust/memoize-things, r=pcwalton
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