Use macros in lib/*.S to facilitate platforms with leading-underscore:s
No initial whitespace for macros
Macro word replacement is done per word

We now iterate through words checking for macros, which is cleaner and
lets us do macro context a little better.
strchr_nest() and function macro parsing
preproc test
cpp argument separation
Fixed bad free
type-checked dynarray_free()
cpp2 half-rewrite / separation

Clear interfaces between macro, eval and tokenising, etc
Partial macro function eval / argument parsing
Tokenising and function macro expansion
More whitespace trimming on func-macro eval
Parsing for "#" and "##"
Argument substitution
Argument insertion for quoting
Argument joining for "##"
More cpp cases
Fixed realloc in util.c's fline()
Fixed __LINE__, __FILE__, etc
Fixed string quote tokenisation