RFC: Add DerefMove

[Rendered view](https://github.com/P1start/rfcs/blob/deref-move/active/0000-deref-move.md)
When I mention a ‘move’ in the RFC, I generally mean a ‘move or copy’. So `deref_move` is called (if is implemented) whenever a value is moved or copied out of a dereference. This means that if I had a struct, `Foo`, that implemented `Deref<int>`, `*foo` (where `foo: Foo`) would call `deref` (because `Foo` doesn’t implement `DerefMove`). However, if I implemented `DerefMove<uint>` on `Foo` as well, even a copy like `*foo` would call `deref_move`, not `deref` any more.

In other words, `deref_move` is called if it *looks* like a move or copy. On types that also implement `DerefMove`, `deref` and `deref_mut` are only called when an expression along the lines of `&*p` or `&mut *p` is encountered.