libcdecl: Fix parsing of very long specifier lists.
Most of the current parser rules that deal with specifiers are arranged
such that all the relevant specifier symbols are shifted before any part
of the specifier list is reduced. Thus, very long specifier lists (with
about 10000 or more specifiers) can lead to a parse error as the symbol
is exhausted (even if there would otherwise be enough memory to allocate
this many specifier items).
Since the C language allows certain specifiers to be repeated any number
of times, there are actually valid declarations with so many specifiers.
Simply collecting the specifiers in reverse order allows for the list
elements to be reduced as they are encountered, which avoids excessive
use of the symbol stack. The order in which specifiers are parsed
does not matter and we can return these lists in any order.