Changed so raises exception on subprocess call instead of silently swallowing it.
Improve the exception handling for the runner and wheel client api.
With the new return semantics when an exception occurs the dict returned now includes an error field
the value of this field is a dict with the keys

name= exception class name
args= exception args
message= exception message

This enables the api to reraise the exception on the api side of the master_call for runner and wheel functions

Improved the error classifiction so eauth and token errors are distinct.
Also exceptions will now be reported more accurately, all exceptions are not eauth exceptions.

A utility function was added in  salt/utils/error called raise_error that raises the exception specified by
the new error field in the return.
This function that s for exception classes with the name first in  salt.exceptions and then exceptions
Other runners that wish to have their exception correctley reraised should add an if clause to this function
Or refactor to have a list that is imported and checked
Merge remote-tracking branch 'upstream/develop' into sam_present

Conflicts:
	salt/utils/network.py
Convert set to list so msgpack and pack it

[DEBUG   ] MasterEvent PULL socket URI: ipc:///var/run/salt/master/master_event_pull.ipc
Process Process-1:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
      self.run()
        File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 114, in run
            self._target(*self._args, **self._kwargs)
              File "/Volumes/Gob/Data/SaltStack/Code/salt/salt/master.py", line 272, in _clear_old_jobs
                  event.fire_event(data, tagify('present', 'presense'))
                    File "/Volumes/Gob/Data/SaltStack/Code/salt/salt/utils/event.py", line 296, in fire_event
                        event = '{0}{1}{2}'.format(tag, tagend, self.serial.dumps(data))
                          File "/Volumes/Gob/Data/SaltStack/Code/salt/salt/payload.py", line 118, in dumps
                              return msgpack.dumps(msg)
                                File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/msgpack/__init__.py", line 46, in packb
                                    return Packer(**kwargs).pack(o)
                                      File "_packer.pyx", line 206, in msgpack._packer.Packer.pack (msgpack/_packer.cpp:206)
                                        File "_packer.pyx", line 208, in msgpack._packer.Packer.pack (msgpack/_packer.cpp:208)
                                          File "_packer.pyx", line 175, in msgpack._packer.Packer._pack (msgpack/_packer.cpp:175)
                                            File "_packer.pyx", line 203, in msgpack._packer.Packer._pack (msgpack/_packer.cpp:203)
                                            TypeError: can't serialize set(['alpha'])
Moved old_present initialiation outside while loop so lost will work
Merge remote-tracking branch 'upstream/develop' into sam_present

Conflicts:
	salt/master.py
Fix infinite recursion when a file is invalid (corrupted, empty, or mid-write)
Update requirements concerning ZMQ version

Commit 60fbb6ffa616512f947c57f76eee44e33436b36e requires ZMQ >= 3.2.0.
PyZMQ should be >= 2.2.0 to fully support ZMQ 3.x.
Merge pull request #9156 from jacksontj/develop

Fix infinite recursion when a file is invalid (corrupted, empty, or mid-write)
Merge pull request #9178 from tmartinfr/fix-doc-zmq

Update requirements concerning ZMQ version
Merge pull request #9095 from SmithSamuelM/sam_present

Fixed presence events
Merge remote-tracking branch 'upstream/develop' into develop