Type conversions

Casting and coercions. Adds custom DST coercions for smart pointers. Otherwise, mostly descriptive, with a few bits of tidying up.
I don't see it spelled out here (but I guess neither are numeric casts), `*T` -> `*U` is gonna remain a cast, right?