implement parallel actions

All steps are executed in parallel; returns the last error seen, but waits for
all to complete. Forwards cancel/cleanup through to all steps.

Signed-off-by: James Myers <jmyers@pivotallabs.com>