Use __va_copy as fallback fo va_copy and a = b as fallback of the fallback

This is needed because clang in c89 mode implements __va_copy
(it was in draft version of the spec) but forbids assignments of __builtin_va_list).

What do you think?

(I'm also looking at what the CI says, too lazy to spawn a linux VM)