Add processes and port tasks

Also rearranged the generated SVG elements: the initial implementation
split them up into non-overlapping tiny bits as an early optimization
that lead to horrible and slow code, as usual.  Now blocks are output
after the blocks that contain them. SVG layering works by drawing
objects that come later draw on top, so this is what we want. This will
allow for easy layering of the visual elements, so you can for example
turn off all system calls or interrupts, etc.