Refactored forking in CM_Process

- Passed child workload as a closure to CM_Process::fork()
- Moved synchronization/keep alive logic to a new method waitForChildren() to be called explicitly
- Added termination callback called after waitForChildren() - either when the child processes are all terminated or when the parent process is being interrupted
- Added thus support for different workloads executed in parallel