Ensure that metadata.json contains empty strings for unset values

The metadata.json must have an empty string in place for values that
has not been set or the puppet runtime will throw weird errors. This
commit ensures that no string attribute is null prior to JSON
serialization of the Metadata class.

Closes #536
Merge remote-tracking branch 'origin/dev' into kepler