Updated the install function to use the same install/downgrade/reinstall logic for sources as it was already using for pkgs.
fixed pylint violations
optionally get etcd vals from master, squash stack traces, and fix lint issues
Execute runner functions asynchronously via the Reactor

Closes #13277
added content to cloud provider section for openstack
fixed minor typo in openstack topic
Merge remote-tracking branch 'salt/develop' into develop
Add rpm verify option to pkg.installed state
Updated to managing schedule code.  Adding ability to enable, disable scheduler completely on a minion.  Also the ability to enable and disable particular jobs on minions.  Updating add_job to match with another commit
Merge remote-tracking branch 'upstream/develop' into etcd_mods
removing redundancy
Merge remote-tracking branch 'upstream/develop' into etcd_mods
mistakenly removed default values
Reuse the channel within the same fileclient
Convert firing events to channels
Remove print from debugging
Make the master Mworkers more robust to bad clients

Today if you create a client that does

```
import zmq

context = zmq.Context()
socket = None
while True:
    del socket
    socket = context.socket(zmq.REQ)
    socket.connect('tcp://127.0.0.1:4506')
    socket.send('foo')
```

Each asymetric call will cause a master process to go defunct. This patch will catch those exceptions, log them, and rebind the worker zmq socket.
On error in SREQ, reset the socket. This will fix all cases where the master is too busy and we leave the socket in a state where we've done a send but not a recv.
Re-add missing send, my editor messed up in weird ways when i did an "undo" apparently i missed this one ;)
be consistent with the _