Require leading underscore for user-defined string suffix.

The C++11 standard says that any sequence of ID characters immediately
following any literal are a user-defined literal suffix and are in fact
part of the literal.  For strings, this is a big problem, because some
headers have constructs like "string"MACRO where a string and a macro
ID are adjacent.  Both clang and gcc have taken the step of requiring
that all suffixes start with an underscore, to make it so that fewer
existing headers break the standard.  I've decided to do the same.
Add alias declarations for C++11 support.

Template alias declarations are parsed but are not stored.
Add char16_t and char32_t types for C++11 support.
Add explicit template instantiation, with extern for C++11.
Add parsing of variadic templates for C++11 support.

This was done by adding opt_ellipsis where it was needed for C++11
(specifically after base class IDs and before declarator IDs), and
then adding opt_ellipsis in a whole bunch of other places in order
to eliminate shift/reduce errors in the parser generation.  Base
class specifiers that are parameter packs are ignored for now.
Add attribute specifiers for C++11, ignore them for now.

Attributes could be very useful, if they could be stored and used
by the wrappers.  For now, though, just parsing them is enough.
Add support for variadic macros for C++11 support.

This implementations strictly follows the C++11 standard, by
requiring at least one argument to be passed as the variadic
argument list.
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.
Make preprocessor skip single-quotes like double-quotes.

According to the standard, a character literal can be of any length,
even though lengths of more than one character are implementation
defined very rare.  To be safe, they should be treated with as much
rigor as double-quotes.