creates a ProgressMonitor that maps its progress to a parent's progress. For example, if a process takes a progress monitor, but is implemented in two steps that each take a progress monitor, then two subtask monitors can be created to monitor each step, and the client who passed in the monitor will see the whole deal as one process. Note we would often abuse monitors, handing them off to several processes that would each take the monitor through its lifecycle. Now we require the lifecycle be performed once, so that machines can use the monitors to monitor processes. In this case, SubTaskMonitors should be used, and getSubtaskMonitor was added. Note too that this class should not be called directly, because getSubtaskMonitor allows the source class to return a monitor of its own design.