Implement CROSS.

Blows up memory like nobody’s business, but the semantics should be right.

* move `WorkflowBuilder.join` to the class, like other similar functions.
* adds a test and rejiggers the `joinStructure` helper function yet again.