Extend SysprepParam class to include a value check

Extend the SysprepParam class to support defining a custom check
function which can be used to check if the value given by a user when
updating a sysprep parameter is valid.
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.