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

According to C99 and C++11, if a macro has a variadic parameter, then
that parameter must be supplied with a list of one or more arguments.
However, both gcc and msvc both allow the variadic parameter to be
supplied with no arguments, so I've decided to allow the same here.

The macro expander will eat the comma immediately before the position
where the empty variadic argument list is inserted, as done by msvc.
This comma-eating behavior does not require a "##" concatenator like
gcc, it will eat the comma regardless of whether "##" is present.

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