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
No, I did see the actual change, but it just wasn't clear what the intent was.

Thanks for the explanation, it's clearer now. So basically we're trying to extract the pointer from the ref parameter, but due to `alias this` or `opCast` wrongly having higher priority, the cast can return something else instead. So we have to do this stunt with casting to `void**` and then reading it back. I'm wondering if we should factor this operation out into its own function, say `extractRefPtr` or something along those lines -- both for readability (because `*cast(void**) &source` is really hard to read and understand), and for possible general reuse, since I can see other use cases for this and it would be nice to have a known-working solution in Phobos instead of everyone reinventing their own broken cast.