rework of cluster manager. support additional launches via a worker

This PR does the following:
- simplifies the cluster manager interface

- starts additional workers at a host *from the first worker* . Will both speed up and remove the 
  need for unecessary ssh connections for each worker launch.

- has the framework in place to support custom transport mechanisms at a later stage

- `addprocs` can accept an array of hosts / tuples. Each tuple of the type `(host, count)`.
  `count` can be `"auto"` or `:auto`, in which case it will launch as many workers as the number
  of cores on `host` . machinefile too supports synatx `auto * foo@bar.com` for a machine definition.

Consequently, it supersedes #9202 and #9046 

Not really since a type will not be extensible. For example, if we decide to support user defined transports, then even the `connect` implementation will be part part of the cluster manager, and a `Dict` allows the cluster manager to pass around data specific to its environment.