This module defines a Pipeline.
A Pipeline stores the transformations and dependencies to obtain certain results.
Run the Pipeline (blocking call until the experiment finishes)
Add a new transformation to the Pipeline, returns a new Pipeline containing the plan of the old Pipeline plus the transformation.
Merges all the Pipelines passed into a new Pipeline that is returned.