Null check in parse_clobbers()
Constraint sorting and assignment
Constraint retry/fallback and checking at code gen time
Ignore unused output code for now
TODO for "+" constraint
Modifier todos
Free asm() error string after use
asm() outputs are marked as written to

This doesn't fix things like "x uninitialised on read", since
statement folding happens after all expression folding.

We still record symbols being written to for consistency and for
things like inline functions (another branch), which need to know
if arguments are written.
Cleanup on error in asm() code
Correct iteration for asm constraints
Correct asm constraint calculation - don't skip characters
Emit warning on asm(... : "m"(non-lval) )
Instruct backend to show dereference-str for mem operands
Handle errors earlier in asm() constraining
Handle constrain_val() errors immediately
x86_64 impl_regname_index() handles %-prefixed registers
Fix unknown-clobber null read in x86_64 backend
Seperate asm() instruction formatting and value constraining
Constraint output values, possibly with intermediate temporaries
temporary_for_output() unreachable on return