Add windows userdata

* refactor cloudinit packages to include support for windows userdata
* fix NewMachineConfig to store corect paths when on windows
* removed dependency on 7zip (python distribution installed by cloudbase-init has the tarfile module)

PR summary
==========

This pull request refactors the way userdata gets generated. It adds an interface to replace the cloudinit.Configure(), ConfigureBasic() and ConfigureJuju() bits. It also adds an interface to do platform specific rendering of path creation and file creation.

As a result of the new interface approach, there is a need to know the series for which we are rendering the cloudinit config before we reach ConfigureJuju. Because of this need, the Tools field either has to be populated in NewMachineConfig, or a new Series field needs to be added at that time. Given that the provisioner already knows this information when calling NewMachineConfig(), I see no reason to throw away this information and rely on a second structure, that is populated later (Tools) to determine the series (I am open to suggestions though). 


This does *not* have to be done this PR -- but I'd appreciate discussing it now, and I think it must be done soon. I think my suggestion has a cleaner and less misleading structure but I'm keen to hear even better ideas; but regardless we should take the opportunity to clean up the responsibility boundaries now -- we'll have centos to deal with as well, soon enough, and the more implementations we have the harder it will be to untangle them (I speak with experience of environs, sad to say).