Allow implicit coercions for cross-borrows.

Wherever a type implements `Deref<T>`, allow an implicit coercion to `&T`. Removes the need for most occurrences of `&*`.
I'm in favour of this. For methods, it is normally fairly clear that the receiver is being mutated, e.g. `vec.push`, but this is not necessarily so clear for general arguments.

I know that some C++ style guides disallow non-`const` references; although we are at a slight advantage, since the effects of 'incorrect' mutation are not nearly as catastrophic.