Adds Windows Support to satori discovery

This change adds the capability to satori to do data plane discovery on Windows devices.
For that, a class has been added that mirrors the functionality of satori/ssh.py and
utilizes a "3rd party" script (satori/contrib/psexec.py) which is called via subprocess.Popen().
Further to that, an SSH tunneling class has been put in place that uses paramiko to establish
a tunnel (similar to running ssh -L from a shell). requirements.txt has been extended to
include impacket which satori/contrib/psexec.py imports.

Addressing part of Ziad's comments

Change-Id: I7a94eea9446bc7f57843407fb98880222f7af6af
Implements: blueprint windows-support
Extends bp/windows-support submission 98383

Move support for PoSH-Ohai into its own provider module.
Raise UnsupportedPlatform exceptions in ohai_solo.py
when the client is non-linux, and raise the same
exception in posh_ohai.py when the client is non-windows.

Define a unicode function via utils.py which is python2
and python3 compatible. Replace the unicode function
previously defined in ohai_solo.py with this.

Many style fixes, and trimming some code.
Fixes test_dns.py from change in python-whois.
Updates pep8 requirement from jcrocholl/pep8 Issue#240:
    Fix was merged into pep8 1.5.7
Updates hacking requirement to fix VersionConflict

Change-Id: I0b33d632d157d5219bfee25b669408885f03b873
Implements: blueprint windows-support