RFC: deref coercions

Add the following coercions:

* From `&T` to `&U` when `T: Deref<U>`.
* From `&mut T` to `&U` when `T: Deref<U>`.
* From `&mut T` to `&mut U` when `T: DerefMut<U>`

These coercions eliminate the need for "cross-borrowing" (things like `&**v`) and calls to `as_slice`.

[Rendered](https://github.com/aturon/rfcs/blob/deref-coercions/active/0000-deref-coercions.md)
Is this a formal restriction or an informal one? It should be possible to do something like
```rust
trait Foo { ... }
impl Foo for int { ... }
impl Foo for uint { ... }

struct Bar;

impl<T> Deref<T> for Bar where T: Foo { ... }
```