Stepping over/into working, along with VMProcess.halt.

Lots of hackery in this commit.

First, I wanted Process to live in a dshared space along with its
stack. There was some strange issues going on where the stacks weren't
visible accross processes (even though the Process instances were being
accessed through Interpreter's dshared self.processes attribute). When
the debugger started, in its process it was seeing a different number of
stack frames from the target process (and from the interpreter
process). As a quick/lame solution, I moved the stack frames to the
Interpreter and it worked.

Second, multiprocess.Manager().Queues cannot live in dshared space, so
they could not be Process attributes. I moved channel handling to ipc
and it still got tricky: it made sense to map procids to sets of
channels; all those things need to be shared/visible accross processes,
however, multiprocess.Manager().dicts can't handle nesting (they can
store queues, but not other Manager.dicts()). Because storing
Manager.dicts (which contains the channels) in python dicts wasn't
working (and I'm too tired to investigate it further), I'm storing them
as ipc's module attributes.

Finally, Process needs a reference to multiprocess.Process so it can
terminate(). Because it can't store it in its attributes (see above), I
did the same trick as before: creating dynamically module attributes.