Serialize timestamp in Puppet::Node::Fact using iso8601
(maint) Split to_pson_data_hash into generic to_data_hash component

Split out the parts generating a hash of the object itself from adding
document_type metadata.

Also split out for all resources that generated the hash directly inside
the to_pson method.
Add msgpack serialization format

Use a feature to check for existence of msgpack library and add the
serialization format if it is supported.