Rewrite assembler

Simplify process of creating workflow.

Main change is removing function returning functions that should be called with `self()` and then passing whole list of those around.  Now responsibility of creating process lies in given module, and we pass around rest of workflow (if needed).
Line 93 is too long: "%% using a given number of CPU and GPU worker processes. These numbers are specified under".