Type conversions

Casting and coercions. Adds custom DST coercions for smart pointers. Otherwise, mostly descriptive, with a few bits of tidying up.
This is new, isn't it? Can we get `&str` -> `*u8` too?