Fix several snags, including storage for the argv pointer and dealing with the case when the invariant loop analyser in fact kills the latch edge.
Fix a silly bug incrementing the refcount on block exit and a mistake creating Single vals when a Multi is needed
Fix: when analysing nested loops, either directly nested or within calls, retain the latch-edge store for later use until the outermost loop analysis is completed, not just the local loop. This is needed because otherwise locals will be reinitialised on future visits and cause oscillation between the preheader-only and preheader+general-latch case.
Remove invariant support -- too many complicated paths for not much gain.

This was more useful back when we used dependency-tracking instead of presorting to evaluate instructions in the right order. Now we just compute the result per loop iteration.