Merge PR #8 (feature-windows-improvements) from skalkoto/snf-image-creator

Changes include:

 * Break windows.py into multiple modules.
 * Rewrite sysprep parameters mechanism and add a menu entry for this
   in snf-image-creator expert mode.
 * Detect if the media is already sysprepped before performing further
   customizatog.
 * Don't ask for windows password before customization (reset it if needed)
 * Detect if the virtio drivers are installed in the media.
   If not refuse to perform the customization.
Merge PR #16 (feature-code-cleanup) from skalkoto/snf-image-creator

Small fixes and code beautification.
Add extra virtio sysprep parameter in windows

This parameter points to a directory that hosts virtio drivers for
windows.
windows: Install viostor driver if missing

Add a dirty way to install the viostor driver in windows in order
to make them bootable. This works on Windows 2008R2
windows: Add REG_EXPAND_SZ() registry helper func

Add this helper lambda function that can be used to update the value of
type REG_EXPAND_SZ
windows: Add systemroot as a member in Windows

It is used many cases and it is better if we cache it.
windows: Upload the virtio drivers to the media

Upload the virtio drivers to the media and add the drivers directory to
the DevicePath Registry key
windows: Add script to install the virtio drivers

Add a powershell script in the input media that will properly install
the virtio drivers in the next boot.
Add check_version method in OSBase

This method can be used to compare the OS version against one specified
by the user.
Add Mount context manager in OSBase cls

Remove mount and unmount methods and add a mount context manager for
mounting the media file systems.
windows: Support WIN8 virtio driver installation

Support installing virtio drivers in Windows 8, 8.1, 2012 and 2012R2
windows: Monitor the VM booting in virtio install

When installing the virtio drivers monitor the booting process of
the windows VM
windows: Make install_virtio_drivers() public

Make install_virtio_drivers a public method of the class Windows
windows: Rewrite the INF file parsing function

Collect more detailed information about the installed VirtIO drivers
windows: Add a VirtIO install entry in dialog menu

Merge the Parameter menu entry with Sysprep and add a new entry for
installing VirtIO drivers. This will only be visible in Windows.
windows: Fix the valid VirtIO directory check

Rewrite the virtio_dir_check function that checks if a given directory
is indeed hosting VirtIO drivers.
windows: Uninstall the old VirtIO drivers

When installing new drivers, make sure the old ones get uninstalled.
windows: Make Windows INF parsing more accurate

 * Detect the VirtIO driver type by the Device ID it refers to and not
   the catalog file name
 * Check if a driver is suitable for the input media by examining the
   TargetOSVersion field
windows: Only install validated VirtIO drivers

Only install the drivers that where previously validated by
_fetch_virtio_drivers()
Minor pylint fixes in windows/__init__.py