Add PipeFactoryOps, with mapElements, flatMapElements and mapPipe

fixes #431