Type conversions

Casting and coercions. Adds custom DST coercions for smart pointers. Otherwise, mostly descriptive, with a few bits of tidying up.
This only allows casts TO `*mut T`, so I don't think there is an interaction - unless I am missing something?