Represent generated C code in normal form

Capture more invariants in the C AST type.  This change should have no externally-visible effects.