RFC: Raw Reform

* Introduce RawSlice and RawMutSlice extension traits to be implemented on
`*const [T]` and `*mut [T]` that provide parts of the slice and ptr API to better bridge the
gap between the two.

* Provide unsafe versions of the slicing and indexing operators on raw slices to provide ergonomic
unchecked slice manipulation.

* Provide unsafe versions of the addition, subtraction, and indexing operators on raw ptrs to
provide more ergonomic ptr manipulation.

* Deprecate some of the free functions in `ptr`, and duplicate the rest as convenience methods on
the RawPtr extension traits.

* Deprecate *all* `unsafe` methods on slices and `slice::raw` in favour of raw slices.

* Add conversion methods to the three families of extension traits for conveniently moving between
them.

[Rendered](https://github.com/Gankro/rfcs/blob/raw-reform/active/0000-raw-reform.md)
On that note, this means that raw pointers to unsized types besides `[T]` will implement neither `RawSlice<T>` nor `RawPtr<T>`. This seems potentially unfortunate. For example, a `*const str` will have this issue.

Perhaps `RawPtr<T>` should actually be split into two traits, `RawPtr<T>` which contains everything that doesn't conflict with `RawSlice<T>`, and then `RawSizedPtr<T: Sized>`.