Introduce remaining Index traits

For the upgrade mechanism required to fix the `DerefMut`-in-immutable-contexts issue.
Or is it downgrade? In any case, one of `IndexMut` or `Index` is picked, and depending on whether the result is required to be a mutable lvalue (e.g. method call with `&mut self`) or not, the operation will be adjusted to use the more appropriate trait.