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 

host/port information are maintained by the respective cluster managers and "config" dict