Simple container class used for storing "additional" metadata about
properties. Carved out to reduce number of distinct properties that
actual property implementations and placeholders need to store;
since this instances are immutable, they can be freely shared.
Three states: required, not required and unknown; unknown represented
Optional human-readable description associated with the property.
Minor optimization: let's canonicalize back to placeholders in cases
where there is no real data to consider