Use the existing pubkey for the sign in payload

Rather than making a temp file to save out the public key just to read
it back in to give to the master for sign in, we can just read the
existing public key file that was just created.
include msgpack in thin.tgz

While msgpack is an extmod (it uses an platform-dependent .so) it
includes a pure python fallback.  Including it in thin will not create
a protability problem.
Preserve stdout, stderr and retcode from salt-ssh raw command

salt-ssh raw mode only emits stdout lines; it emits neither stderr nor
the return code.  salt-ssh raw works more like cmd.run rather than
cmd.run_all.  Preserving stdout, stderr and the return code are
imperative for validating the results of a salt-ssh raw command.

This stores 'stdout', 'stderr' and 'retcode' in the ret dictionary so
that the complete information can be emitted by the outputter.

Fixes #10432
Appease the pylint gods.

Fixes #10432
Group SSH auth options together; make consistent in formatting
add some version infos for cron
ZMQ topics

Salt targeting is done using the zmq pub/sub mechanism. No filtering is done so all requests go to all minions. This is an attempt to make the requests more target-able. ZeroMQ supports filters on these sockets which are processed publisher side. So the thought is to set it to the minion id and a shared "broadcast" one. Only requests of tgt_type == list will use this. The thought is if we like this we can use other data (mine etc) to determine a more specific target on the master (such as a list) from a glob match etc.

Syndication masters do not have zmq filters applied, but will send out their syndicated requests with a filter as well. So all targeted messages aren't gauranteed to go to only the minion, its just best effort
Rewrite environ modules
Add more caution to the clear_all option docs
Fix typo in environ module documentation
Minor string formatting in environ module
Add import for new exception
Remove whitespace
Remove commented code in environ module
Ability to destroy instances matching a profile

There exists times when there may be multiple providers for a single
region. For example in ec2 you might have a provider for each region.
When salt-cloud runs get_running_by_names it will return runnung
instances for each provider. The ec2 provider returns all running
instances for the entire region, thus the same instance will return
for each avaliability zone. Once salt-cloud destroys this instance
it will thrown an exception when it tries again.

The logic is, if you can specify a profile when creating, why not
when destroying?

Example:

```bash
root@localhost:~# salt-cloud example1234 -d
[INFO    ] salt-cloud starting
The following virtual machines are set to be destroyed:
  us-west-2b-devops:
    ec2:
      example1234
  us-west-2b-dev:
    ec2:
      example1234
  us-west-2a-dev:
    ec2:
      example1234
  us-west-2a-devops:
    ec2:
      example1234
```

After this fix:

```bash
root@localhost:~# salt-cloud -p usw2a-dev-web example1234 -d
[INFO    ] salt-cloud starting
The following virtual machines are set to be destroyed:
  us-west-2a-dev:
    ec2:
      example1234
```
Fix pylint error No space allowed around keyword

```shell
00:09:50 + pylint --rcfile=/var/lib/jenkins/workspace/salt-pr-lint/.testing.pylintrc salt/
00:13:45 ************* Module salt.cloud.cli
00:13:45 salt/cloud/cli.py:241: [E8251(unexpected-spaces-around-keyword-/-parameter-equals), ] PEP8 E251: unexpected spaces around keyword / parameter equals
00:13:45 salt/cloud/cli.py:241: [E8251(unexpected-spaces-around-keyword-/-parameter-equals), ] PEP8 E251: unexpected spaces around keyword / parameter equals
00:13:45 salt/cloud/cli.py:241: [C0326(bad-whitespace), ] No space allowed around keyword argument assignment
00:13:45                     profile = self.options.profile
```
fix for broken salt-ssh key_deploy
Provide the loaded states to renderers

As @mgwilliams has been using pyobjects more he's discovered that when
we load the list of states inside the renderer we need to provide the
pillar & grain data so that it's available to the modules or we get
exceptions like the following.

```
          ID: ls
    Function: cmd.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/usr/lib/python2.7/dist-packages/salt/state.py", line 1371, in call
                  **cdata['kwargs'])
                File "/usr/lib/python2.7/dist-packages/salt/states/cmd.py", line 598, in run
                  'shell': shell or __grains__['shell'],
              KeyError: 'shell'
     Changes:
```

We also reasoned that invoking the state loader on every single render
of an sls file is a bit excessive and it would be better to simply have
the already loaded list of states provided to the renderer modules.
Initial commit of znc module
Merge branch 'filter-instances-to-destroy-when-specifying-a-profile' into develop