Add force_reload for debian_service, upstart and systemd and use it as default in mod_watch if available
salt.utils: add is_linux() and is_windows()

These were mainly added after I saw the 2/3 different ways various
places in the salt code check to see if a platform is indeed windows
or not and I wanted to consolidate them all including the grains before
there necessarily is __grains__['os'] to rely on.
Switch the core grains to salt.utils.is_windows()
Move windows detection to using salt.utils.is_windows()

Also makes the reg and win_network modules not attempt to load when
there are missing python modules.
Clean up some logic in the utils python module

Also re-arrange the imports by size due to my OCD
Skip the virtualenv state test if virtualenv isn't installed
Don't nuke the tests because event self.destroy() always blows up
Skip the git state tests if a dns lookup to github.com fails

This is the quickest clever thing I could think of while running the
unit tests offline in the car during a long road trip.
Merge pull request #3004 from SEJeff/fix-unit-tests

Fix unit tests
Fix a bug in the loader

Several modules where __virtual__() were returning None were being
improperly loaded. Any __virtual__() that returns a string will
never evaluate to False when cast to a bool() so "if not virtual"
will do the right thing as we get more and more modules that might
not necessarily be written up to standard (until we can fix them)
modules.brew: make __virtual__() properly return False
Document the right ebuild package name format

It was discovered that pkg module for Gentoo-based systems does not work
as expected if the full package name (including the category) is not
specified. This is not documented anywhere, so this should give users
better changes to know about it.
Check issue #3008 on GitHub to know about further development.
Fix pkg state regression

acd949c and 0b5ce09 broke the pkg state, such that for single pkg
installs (i.e. no "pkgs" or "sources"), if the version arg is not
provided, a package will always be interpreted by the pkg state as being
installed, and the package will never be installed. This commit fixes
that regression.
Fix problem with attribute checks when data looks like:
"[(u'bus', u'ide'), (u'dev', u'hdb')]"
Bugfix problems with spaces in filenames
Also disable shell=True for security purposes
Force Gentoo-based distros to use full pkg name

Do not proceed unless package names are provided using the
category/pkgname format. For packages submitted without the category
name, offer suggestions from the portage tree.
Add parsing for qemu-img snapshot list
Add configurable tcp keepalive support enabled by default
correct documentation in sample config for TCP keepalive option
Merge pull request #3009 from tchap/ebuild-package-names

Document the right ebuild package name format