The original plan was to allow each system to have customizable lists of
metadata, which made constructing metadata really painful (the declaration
list isn't stored on the metadata instance because that's pretty wasteful
for 2,000 games). Now they're constructed by passing a MetaDataListType
enum in the constructor.
Declaration lists are now managed by const globals passed by reference
through getMDDByType(MetaDataListType).
Can display dates, date + times, and an english description of a time
relative to now ("2 secs ago", "1 day ago", etc.).
Supports editing dates (including day-of-month validation).
This took a lot longer than I thought.