implement YAML marshaling

This will make it possible to generate charms programmatically.