windows: Move code from Windows class to VM

Move all helper methods that control the Winodows VM from Windows to
VM class
windows: split do_sysprep to reduce complexity

Add a new _exec_sysprep_tasks method that is called by do_sysprep and
hosts the actual code for executing the system preparation tasks
windows: Create a new registry module

This modules hosts the Registry class which contains all the registry
manipulation code previously hosted under the Windows class
Fix a bug in sysprep param handling in dialog_menu

If the needed sysprep parameters had all default values,
snf-image-creator would crash when trying to run the image
customization. This bug could not be triggered from the current os_type
classes.
windows: Reset the password when customizing

Don't ask the user to enter an Administrator password before cleaning up
a Windows image. Reset the password before starting the process and
assign the old value if needed at the end.
windows: Detect if the media is already sysprepped

Add code to check if the source media is a sysprepped windows image. If
so, don't allow it to be further customized.

This resolves #6
Rewrite the sysprep parameter mechanism

Rewrite the mechanism to have better control on the system preparation
parameters. Also change the way the parameters are updated in the UI.
Rewrite file selection function

Make it more general. Till know it was only used for selecting the input
media but other parts of the program should also make use of it.
Check for Winexe when customizing

We used to check for the presence of the winexe executable in the
Windows __init__ function. This is not optimal. The winexe check
should be done during customization. The user should be able to
dump, upload or register an image without having Winexe installed.
windows: Check if VirtIO drivers are installed

If the virtio drivers are not installed on the media, raise a FatalError
Add an attribute in OSBase to host mount errors

Add the _mount_error attribute in OSBase. If mount fails, the error
message is written there.
Beautify the image creation output

 * Mount silently when mounting ro
 * Add a warning if no inspection method is available
 * In Windows put the "Preparing system for image creation" before
   mounting takes place
windows: Simplify the VM boot monitoring code

There is no need to use PowerShell to write the random token to the
serial port. Doing 'echo token > COM1' will do the trick.
Minor fixes in the sysprep params menu

 * Use select_file() to update a "file" sysprep param
 * Switch the order of <Details> and <Update> buttons
 * Use the last visited menu entry as default item
Add a new "directory" type for sysprep params
Add extra virtio sysprep parameter in windows

This parameter points to a directory that hosts virtio drivers for
windows.
Extend sysprep params to support a value check

Extend the mechanism to support passing a function to the syspep
parameter which can be used to check if the supplied value is correct.
This is used in virtio sysprep param to check if the needed files are
hosted in the directory the user supplied.