Choice Properly Sleeps Forked Processes

Previously, I was using killThread to stop forked processes in unused
choice branches, but now, they are simply frozen, ready to be woken up
later.
I also reworked wormhole internals to prevent data loss in certain
cases.