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).