librustc: Improve method autoderef/deref/index behavior more, and enable IndexMut on mutable vectors.

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 
is there a current reason for the explicit `drop` here and below, or is that just carry-over from the previous version of the code?  These calls to `try` are returning `Option<T>`, which is not marked as `must_use` ...