make sure a busy-waiting loop can't block the GC and hence the whole VM

This is accomplished by adding thunk calls to check if we need to stall the VM (presumably for a GC cycle) - called `idleIfNecessary` - to all backwards branches (which we assume are loops, though technically might not be in rare situations).  This fixes #49. As discussed there, it would be difficult to prove these calls aren't necessary in particular situations.