semantic: Implement var args.

Doesn't use the LLVM stuff as it's patchy,
and doesn't work with complex types.