pipelining/node.h: Allow forward and set_steps in propagate.
Pipelining library: Call fetch/forward/set_steps in propagate rather than begin.
Parallel: Wait for workers in producer rather than consumer.

With the change in the order in which begin() is called, the consumer
now has begin() called **before** the workers, meaning the main thread
would deadlock waiting for the worker threads which had not had a chance
to launch.
ut-pipelining: Update tests to new propagate/begin semantics.