Don't leak old comment/subtype when setting new ones
Add new global comment assigning pass

The C constructs are parsed with cSkip() which will just skip from the ';'
ending one statement to the first non-space token of the next construct,
skipping and removing any comments in between. A separate pass that thinks
in lines instead of C constructs can handle this much easier.
Emit multi-line comments above their parent statement
Assign comments from a multdecl's base type to the first following construct
Don't scan for matching parentheses across high-level constructs
Add #ifdef/#else/#endif parsing
Fix missing space when emitting #defines
Don't emit double-quotes around the identifier in #ifdefs
Fix CONST emitting
type parsing: Recognize SIGNED|UNSIGNED alone and behind base type
Add proper parsing loop for base type + modifiers
Fix divider parsing to require only 1 empty line, not 2
Don't append useless newlines to comments
Assign comments above multiple statements to EOL, for TK_DIVIDER
Emit comments on TK_DIVIDER
Don't emit empty line below comment if it's just the comment but no code
Don't emit space in front of comment if it's at BOL
Add basic "typedef struct { } MultDecl;" parsing
Improve handling of comments directly above multiple statements
Use a temp id for anonymous structs, instead of empty string