Switch from calculating loop invariants in advance to calculating them when the first iteration of a loop instantiates that block.

This fixes a bug where dead pointers had invariant pointers derived from them which were being pointlessly calculated.
Adjust invar branch strategy again: calculate the successors, but do not actively create blocks since they are now produced on demand by child scopes.
Create ShadowBBs for disabled loops in the prepare-commit phase if they haven't been needed before
Do block creation for a whole loop if it fails to terminate