Refactoring of ExecutionPlanBuilder

* Introduced the PipeBuilder trait, so EPB does not have to know about their internals
* Introduced a PipeBuilder that knows to switch between new and old PipeBuilding