Rewrite execution code to only terminate once all pipelines run, catch errors, correct return value

Should supersede #3 and #5.
It should be possible but that was easier and more readable. It's not that bad a "global state" as there's only one execution of the pipelines.