Use reinterpret cast is [does|may]PointTo

Instead of a straight up cast. Avoids problems related to opCast or alias this, such as those in:
http://forum.dlang.org/thread/vldwvnuivsfwjozqiuup@forum.dlang.org
I'd argue that we *should* introduce `reinterpretCast(T)` in this pull. Perhaps as a private template first, so we don't risk user code depending on it should we decide to revert it in the future, but I think this is the right direction to go.