Explicitly cast modification_time to qint64 to resolve Linux build
error where std::int64_t conversion to QJsonValue is ambiguous.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implement a comprehensive caching system for game title metadata to
significantly improve game list loading performance for large libraries.
- Add CachedGameMetadata structure to store program ID, file type,
size, title, icon, and modification time
- Implement LoadGameMetadataCache() and SaveGameMetadataCache() to
persist cache to disk as JSON
- Integrate cache into ScanFileSystem() to skip expensive ReadIcon()
and ReadTitle() operations when cached data is available
- Add automatic cache invalidation based on file modification time
- Cache respects existing UISettings::values.cache_game_list setting
The cache is stored in the game_list directory and automatically
invalidates entries when files are modified, ensuring data accuracy
while providing substantial performance improvements for subsequent
library scans.
Signed-off-by: Zephyron <zephyron@citron-emu.org>