ARM: Fix passing arrays to varadic functions

TinyCC miscompiled

void g(int,...);

void f(void)
{
        char b[4000];
        g(1, 2, 3, 4, b);
}

in two ways:
 1. It didn't align the stack to 8 bytes before the call
 2. It added sizeof(b) to the stack pointer after the call

Conflicts:

	arm-gen.c
tccpp: reorder some tokens

... and make future reordering possibly easier

related to 9a6ee577f6165dccfde424732bfc6f16f1e2811b

Conflicts:

	tccpp.c
x86_64: pass va_list as pointer

The ABI requires that va_list is passed as a pointer although its
contents is a kept in a structure. Therefore make it a single element
array.
Update Changelog from git changelog entries
Add tests for previous fixes

Add tests for the fixes made in commits
76cb1144ef91924c53c57ea71e6f67ce73ce1cc6,
a465b7f58fdea15caa1bfb81ff5e985c94c4df4a,
0f522fb32a635dafce30f3ce3ff2cb15bcec809e,
82969f045c99b4d1ef833de35117c17b326b46c0 and
673befd2d7745a90c1c4fcb6d2f0e266c04f8c97.