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
windows code review update thanks to @s0undt3ch
Add 'user.list_users'
Add missing config params to minion conf docs

I noticed earlier tonight when I added some information to the "hacking"
docs that my "root_dir" and "sock_dir" links were not actually linking
to anything, and found that they were missing from the minion
configuration page. It turns out that there were a good many params that
hadn't made their way into the docs yet, so I added as many of them as
I could identify.
Fix some "`NameError`s" introduced when fixing #3015. Fixes #3032.

* Additionally also terminate worker processes on `.destroy()`.
Switch `self.event.destroy()` with `del(self.event)` which should be the same.
Add virtualenv support to `.pylintrc`

Include the current active virtualenv into pylint's init-hook.
The `base64` encoded string is:
```python
import sys, os

if 'VIRTUAL_ENV' not in os.environ:
    sys.exit(0)

ve_dir = os.environ['VIRTUAL_ENV']
ve_dir in sys.path or sys.path.insert(0, ve_dir)
activate_this = os.path.join(os.path.join(ve_dir, 'bin'), 'activate_this.py')

if not os.path.exists(activate_this):
    activate_this = os.path.join(os.path.join(ve_dir, 'Scripts'), 'activate_this.py')

execfile(activate_this, dict(__file__=activate_this))
```
Oops, we can't just exit on the `init-hook`.

The encoded string now looks like:
```python
import os, sys

if 'VIRTUAL_ENV' in os.environ:

    ve_dir = os.environ['VIRTUAL_ENV']
    ve_dir in sys.path or sys.path.insert(0, ve_dir)
    activate_this = os.path.join(os.path.join(ve_dir, 'bin'), 'activate_this.py')

    # Fix for windows
    if not os.path.exists(activate_this):
        activate_this = os.path.join(os.path.join(ve_dir, 'Scripts'), 'activate_this.py')

    execfile(activate_this, dict(__file__=activate_this))
```
Properly avoid "File name too long" ZMQ exceptions. Refs #3026, #2044 and #2926.

We do a proper length check when using the sockets in IPC mode and fail when it reaches 103 which is the lower value for this error on BSD systems, Linux and Solaris is 107. We just exit the master/minion since continuing would mean leaving it crippled.
Removed left over `break` and corrected grammar.
Modified ebuild upgrade command to preform  a full system upgrade. see
http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=2&chap=1#doc_chap3
"Code Listing 3.13: Performing a full update"
Merge pull request #3036 from s0undt3ch/issues/2926

Properly avoid "File name too long" ZMQ exceptions.
Merge pull request #3028 from SEJeff/develop

Add 'user.list_users'
Merge pull request #3031 from archtaku/docs

Add missing config params to minion conf docs
Merge pull request #3039 from shadowfax-chc/develop

Modified ebuild upgrade command to preform a full system upgrade.
Merge pull request #3033 from s0undt3ch/issues/3032

Fix some "`NameError`s" introduced when fixing #3015. Fixes #3032.
Add explanation of "issue" to overstate doc