Salt cloud master host

Scenario cloud map:

```
ubuntu_small:
  - master:
    make_master: True
    securitygroup: ['ssh-external', 'salt-internal']
  - web:
    securitygroup: ['ssh-external', 'salt-internal']
```

To run this from my local machine I must set `ssh_interface: public_ips` but this means the minions are configured to talk to the master on the public_ip which I don't allow with these security groups.

Proposed solution:
Also add `salt_interface: private_ips`. Then I can provision over ssh to the public interface but let the new master and minions communicate internally only.

Tested with ec2, would appreciate any thoughts or testing of the other providers which I've updated too. This could well break the clouds I haven't updated.
@mattmb shouldn't `host` be a fallback, if `salt_host` isn't set? Maybe something like:
```
master_host = deploy_kwargs.get('salt_host', master_host = deploy_kwargs.get('host', None))
```