Add a context manager for opening hive files

Add a context manager in windows.py for reading and writing hive
files. Whenever a method needs to access the Windows registry it should
use this context manager.
Convert windows.py module into a package

As the windows module got bigger and bigger we had to break it into more files
Add sysprep params before init is executed

In add_sysprep_param __init__ decorator, add the sysprep parameters
before executing the init function. This is needed if we want to be
able to access the sysprep_params dictionary from within __init__.
Move winexe.py module inside the windows package
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
windows: Compute CurrentControlSet only ones

Add a current_control_set property in Registry class. This way the
CurrentControllSet registry key is only computed once.