use builtin_va_* for va_* functions and va_list type
(this is probably safer than our own implementation since it respects the particular ABI used by the compiler)
this fixes kernel printf() when using clang