Type conversions

Casting and coercions. Adds custom DST coercions for smart pointers. Otherwise, mostly descriptive, with a few bits of tidying up.
Yeah, actually I guess you do need a where clause on the impl - `where U: Unsize<T>`. Given that where clause the compiler can derive  that `RcBox<U>: Unsize<RcBox<T>>` an thus that we can call `fat_pointer_convert`.