Move CloudInit handlers inside hc2002 library
Move manifest handling to an independent "plugin"

This introduces a customization layer on top of the basic resources,
namely plugins that pre-process resource data. One benefit is the
ability to move existing customizations inside the library, another is
the possibility of expressing plugin dependencies as python imports.

It doesn't make everything pretty right away :-p
Add 'cloud-config' plugin

As it turns out, there can only be one cloud-config file per instance
otherwise CloudInit will misbehave or, more likely, silently drop
commands. This means the earlier puppet support is broken when used
together with explicit #cloud-config entries in user-data.

With this, we make cloud-config a first-class citizen in instance
configuration, which also enables some validation and compression of the
resulting yaml. For the time being, the only validation provided is the
requirement of valid yaml.
Rework the puppet plugin

This drops the handler, instead ties puppet installation directly with
cloud-config, which is now a top-level tag in instances, and adds the #!
magic directly to puppet scripts.

Puppet handling is also, finally, an independent plugin on the library
side of things.