Added support for variadic macros (as in C99).
This is inspired by the patch for bug #359894 in Debian (by "Bernhard R.
Link" <brlink@debian.org>) and the changes in its integration upstream
(Bill Pringlemeir <bpringlemeir@users.sourceforge.net>, July 8 2010).
Several changes are made to the original and upstream patches to fix
additional problems (the very unlikely case of ellipsis followed by
parameters caused wrong reads), avoid useless operations. The upstream
fix also tried to implement a warning on standard C99 variadic
parameters, while allowing GNU extension variadic parameters without any
warning -- reverted to the correct warning logic.
Also, a related routine that does almost the same thing (but uses
location instead of PFILE) also needed the same update in order to keep
consistency.
Added test to check the added functionality.