cluster: allow args and execArgv to be set on fork()

Current, `cluster.fork()` only allows an environment to be passed to the worker. This commit allows both the `args` and `execArgv` to be set also. If they are not specified, the existing behavior is used. Closes #4149.

I would also like to propose a breaking changing change to the `cluster.fork()` signature. My suggestion, since `cluster` is listed as experimental, is to make the signature `cluster.fork([args], [options])`, where `args` and `options` mimic the arguments of the same name passed to `child_process.fork()`.