Now frees memory earlier

Allocate nodes no longer free at the end of their body, but must
contain a Free node inside their body somewhere. This is checked
at codegen time, and valgrind seems happy.

No real performance differences (or peak memory differences really,
for the apps we have). In theory, for long pipelines with not much
lookback, this could save a lot of memory.