Redesign Qt ImageCache invalidation strategy

This page is a capture in the next bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.

Note: this story should only be looked at after we move towards workspaces.

The current ImageCache invalidation approach is brittle and error-prone. When datasets are published, the cache reload is triggered by pattern-matching dataset codes (e.g., checking for "flag", "icon", "currenc", "countr" in the code string). This is fragile because:

Proposed improvements:

Acceptance criteria:

Emacs 29.1 (Org mode 9.6.6)