Support MarshalYAML, to allow alternate encodings
Add Unmarshal support

Allow a struct to override how the data is mapped into itself.