Allow variadic macro argument to be empty (C++ extension).

According to C99 and C++11, if a macro has a variadic argument, it
must be supplied with a list of one or more parameters.  However,
gcc and msvc both allow it to be supplied with no parameters.  To
provide the broadest possible compatibility, the macro expander will
eat the comma before the position where the empty list is inserted,
even in the absence of the "##" that gcc requires for this behavior.

I've also added named variadic arguments as supported by gcc.