cluster: allow multiple calls to setupMaster()

I'm sure there was a long discussion of why this shouldn't be done, but I couldn't find it, and the code seems perfectly amenable to it.

The main change is allowing `cluster.setupMaster()` to be called multiple times.

Only attributes of 'cluster.settings' will be modified after the first
call, leaving all other cluster initialization alone. Each call that
includes a 'settings' argument triggers a 'setup' event to be emitted.

Instead of each call resetting all values to their defaults, use the
current settings (if any) as the default. This retains setupMaster's
support how cluster.fork() uses setupMaster() to ensure
cluster.settings has been populated.

Update example in docs to use current node coding style and include
an example of progressive configuration.

Additionally, the `setup` event is modified to include the the `cluster.settings` object as a parameter.

Emits on every call to cluster.setupMaster(), even if no new settings
are given. This is because calling cluster.setupMaster() without
arguments (or with an empty options object) results in the settings
being restored to their defaults.