Cpp: Changed calling convention for apply_define().
Macro arguments are now sent as an array of strings on the stack,
instead of in a malloced array of structs. This removes the need
for the stage where the malloced array was converted into an
array of strings.
This also removes the argument checking at parse time (as the
checking at expansion time should be sufficient).