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
Update network.py
Add 0.17.4 release notes
Fix typo (option sin -> options in)
list_pkgs became quiet
Don't send timestamps in UTC

Logstash by itself takes care of conversion of timestamps to UTC, with how it was logstash was showing wrong time for the events.
Fix reporting of file.blockreplace state when test=True

When test=True is used, this state does a dry run and doesn't change the
file (as expected), but reports that changes were made. This commit
fixes the reporting so that it states that changes would have been made.
Initial stab at a development salt shell

There is quite a bit of additional work that could be done here but this
gets things rolling at least.

Refs #3814
new external_ip grain for salt - requires that requests be installed
Merge pull request #9143 from whiteinge/salt-shell

Initial stab at a development salt shell
Merge pull request #9142 from terminalmage/quickfix

Fix reporting of file.blockreplace state when test=True
Prevent traceback when job is None.
Merge pull request #9145 from cro/develop

Prevent traceback when job is None.
move external_ip to separate file
return empty dict instead of False if requests fails to import
Merge pull request #9144 from jfrost/external_ip_grain

new external_ip grain for salt - requires that requests be installed