semantic: Report an error, when both _Complex and _Imaginary are given in the declaration specifiers.
semantic: Simplify error logic in parse_declaration_specifiers().
semantic: Correct warning/error messages.

Not all types are part of declarations.
semantic: Emit a warning and use double, when plain _Imaginary is given in a declaration specifier.

This only worked for _Complex before.
semantic: Move some logic from parse_declaration_specifiers() into get_typedef_type() and rename the latter to parse_typedef_name().
semantic: Improve error handling when parsing a typedef name.
Change multi-case macros so their usage looks like ordinary case labels.