returns a fresh, initialized code generator that passes its calls
to 'child' and checks that the stream obeys the M3CG restrictions.
If 'clean_jumps', it also checks that the stack is empty at every
branch point. If 'clean_stores', it also checks that the stack is
empty on every store instruction. If 'nested_calls' is false, it
checks that function calls are not nested. If 'nested_procs' is false,
it checks that function bodies do not overlap.