RFC: overloaded slice notation

This RFC adds *overloaded slice notation*:

- `foo[]` for `foo.as_slice()`
- `foo[n..m]` for `foo.slice(n, m)`
- `foo[n..]` for `foo.slice_from(n)`
- `foo[..m]` for `foo.slice_to(m)`
- `mut` variants of all the above

via two new traits, `Slice` and `SliceMut`.

[Rendered](https://github.com/aturon/rfcs/blob/slice-notation/active/0000-slice-notation.md)
I'm not necessarily opposed, but as I tried to explain in the RFC, there may be very practical reasons not to implement `Deref` on `Vec<T>`, depending on our final resolution rules.

My point is just that if we can solve the ergonomic issues without tying it to `Deref`, we'll have more freedom for the design, even if we do ultimately go the `Deref` route.