Refactored the way that programs are run, running a program twice *nearly* works.
Removed remaining program node observer cruft... it wasn't helping.
Fixed re-run programs thinking that they were finished one exercise too early.