Makes Interpreter wait for all sub-processes

- Changes behaviour of top level interpreter 'run' function so that it
  waits for all spawned sub-processes to finish before finishing itself.
  Previously it behaved 'daemonically' and would terminate as soon as
  the top-level process reached a 'Return' instruction.