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 
You changed the expected result below but the comment still says "Mutable deref used for calling a method taking &self".

I assume the comment is just bogus now.  Please fix it.