Parse a parameter declaration.
(parse-parameter-declaration parstate) → (mv erp param span new-parstate)
A parameter declaration always starts with a list of one or more declaration specifiers, which we parse. Then we may have a declarator, an abstract declarator, or nothing. After that, we may have zero or more attribute specifiers (this is a GCC extension).
As explained in amb-declor/absdeclor, there is a complex syntactic overlap between declarators and abstract declarators. Thus, unless there is no (abstract or non-abstract) declarator, which we recognize by the presence of a comma or closed parenthesis or (if GCC extensions are enabled) an attribute keyword, we parse a possibly ambiguous declarator or abstract declarator, and generate a parameter declarator accordingly, and then a parameter declaration with the declaration specifiers.