Type conversions

Casting and coercions. Adds custom DST coercions for smart pointers. Otherwise, mostly descriptive, with a few bits of tidying up.
If I pass a `&mut u8` to `copy_memory()` that is not an array, will it silently cause a buffer overflow?