Fix gather-temporaries

There were two problems:

1. There was no visit method for with-temp-etc, so it made the wrong
kind of object;

2. the result of collect-temporaries was thrown away in any case
Move the prim defs to later and provide test hook

The macros defining primitives were called before all the things
mentioned in them were defined (easy to miss when using the REPL).

The test hook shells out to gcc, then the compiled program.