I had a new idea for how to add C to herd: just to put "if" and "while" blocks as constructors of the "instruction" datatype. This requires far fewer changes to the codebase compared to my previous attempts. The main downside is that it's now only possible to have labels at the toplevel of a C function; one can no longer have labels inside while/if blocks. I doubt this matters. The main upside is that the Mem module no longer needs any changes at all! The semantics of C is now *entirely* localised to the CPP11Sem module. This also affords me the flexibility to go on from here and add more exotic forms of C instruction, such as general expressions.
Test suite now working quite well. Still more to do to get everything finished, but this approach is looking v promising.
Merge branch 'master' into johnc5