sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
internal structures around. (yay for assuming that pointers can be held in
an int. bah.)
Not sure if it actually _works_ on amd64, but as the output on my i386
doesn't change pre/post-patching, that seems good enough for now.