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). 


Just use the wording from `io/ioutil`?

> WriteFile writes data to a file named by filename. If the file does not exist, WriteFile creates it with permissions perm; otherwise WriteFile truncates it before writing.