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