If the program has completed, don't try to load the state again
let the reference go when the workspace is released.

Otherwise this callback can still end up getting captured in the object graph (for example if a closure escapes the with.node { ... } scope, which then implicitly captures all the current environment including this one.)

This fixes
https://trello.com/c/XNgDogCv/65-bug-checkpoint-cannot-be-restarted-twice
Merge commit '106de615f23be236bbc5fc2bdbe340ee979cb59f'
Merge REMERGE_HEAD