[!!!] Breaking change. See details below.

(1) Add status codes from abnormally terminated child processes to the
    results collection.

    This is a breaking change if you consider every
    result as a valid worker result.

(2) Also include NULL results from worker processes. That means the
    process has finished without errors or exceptions.

    This is a breaking change, if you don't expect NULL values in the
    results.

(3) Return the PID of the worker process instead of the WP instance.

    This is a breaking change, if you expect the result of
    WorkerPool::run() to be the WorkerPool instance.