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.
Warn if a module is wrongly returning `None` instead of `False`.

* Fixed the `brew` and `sysbench` modules which were returning `None` instead of `False`.
* Additionally, regarding the module `sysbench`, @sharan-monikantan, why are the parsed returned keys white-space padded?
Update doc/ref/states/highstate.rst

More details in large example
Typo(Thanks @lyxint) and PEP-8.
Fix my own typo from previous commit.
Merge pull request #3034 from s0undt3ch/develop

Warn if a module is wrongly returning `None` instead of `False`.
Merge pull request #3035 from gotcha/patch-2

Update doc/ref/states/highstate.rst
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"