Experimental varargs fix

As the title says, this is an **experimental** fix for the varargs horror (see https://github.com/ldc-developers/ldc/issues/702, https://github.com/ldc-developers/ldc/issues/172, https://github.com/ldc-developers/ldc/issues/73 and https://github.com/ldc-developers/druntime/pull/14).
It seems to be working fine on Win64 in combination with the ```core.vararg``` and ```core.stdc.stdarg``` patches from https://github.com/ldc-developers/druntime/pull/14.
Yes, I may have been a bit too eager and will remove some obvious ones. I've added some comments when examining and trying to understand the original code. Now that I got used to the involved functions, the code is crystal-clear to me too, but as always, it's hard to remember the difficulties one's had at the beginning and hence see the code from the perspective of someone who is having a look at the code base for the first time. But I'll definitely keep comments providing additional info like types and indirections (e.g, why load _argptr? ah yeah, it's only the address and not the actual va_list value...).