cluster: support passing options to cluster.Worker constructor

This commit moves some common `cluster.Worker` code into the constructor via support of an `options` argument. @bnoordhuis this was the basic refactor that I had in mind in #8008, but I can take it further if you think it's appropriate. Specifically, I think all of the worker process event handlers can be moved and handled with a `cluster.isMaster` check. If you think that would be overkill, that's fine too.

Closes #8008