Pipeline execution code moved to pipe_base

I’ve just merged DM-48980, which implements the deprecation phase of RFC-1066 by moving a lot of code from ctrl_mpexec to pipe_base (with shims for backwards compatibility that emit deprecation warnings when imported or used).

I’ve left the ctrl_mpexec package in place, but now everything in it should be considered an implementation detail of the pipetask CLI tool, with no public Python interfaces.

The most visible classes moved are SimplePipelineExecutor and SeparablePipelineExecutor, which are now in lsst.pipe.base.simple_pipeline_executor and lsst.pipe.base.separable_pipeline_executor, respectively.