tag: xmp: Refactor mappings storage
This commit is only refactoring, no fetaures added.
Do not store tags in flexible arrays as it doesn't allow us
to use nested flexible arrays. This is going to be needed in the
following commits to map gst tags that are stored into
2 separate tags in xmp (Not that they are alternatives, but
they are complementary).
For example, GST_TAG_ELEVATION is represented in the exif
schema with 2 fields: the absolute altitude and an integer
to indicate if it is above or below sea level.
The previous mappings storage wouldn't allow us to
express it.
Also store a serialization and a deserialization function
for each xmp tag as some of them require some non-trivial
convertion to its string form.
Fixes #613690