An overloaded autoderef step, representing a Deref(Mut)::deref(_mut)
call, with the signature &'a T -> &'a U or &'a mut T -> &'a mut U.
The target type is U in both cases, with the region and mutability
being those shared by both the receiver and the returned reference.
At least for initial deployment, we want to limit two-phase borrows to
only a few specific cases. Right now, those are mostly “things that desugar”
into method calls: