Refactor PlanOp::copy into PipelineObserver::clone