* remove the code which adds custom Windows fonts but keep scaling
* only attempt to load achievements images when hook is ready
* cleanup overlay images on unhook
* free the detector when we get a renderer hook instance
* lock everywhere!
* prefix the debug messages for a cleaner debug log
* use const str as a param for defined_achievements_find
* GetStat()/SetStat(): return false if given name is not defined by stats.txt
* according to docs:
GetAchievement()/SetAchievement()/ClearAchievement()/GetAchievementAndUnlockTime()/IndicateAchievementProgress()
will always return true if the name was not null and exists in Admin page (achievements.json)
* ClearAchievement(): don't write user data unless json object doesn't exist, or key "earned" is true
* reduce the code in GetAchievementDisplayAttribute()
* according to docs IndicateAchievementProgress() returns false if the achievement is already unlocked
* many logging
* new function in local storage to get list of folders at root level, given some path
* use last week epoch as the default time for mods dates (created, added, etc...)
* UGC: some params checks according to SDK docs for CreateQueryXXX() functions
* fixed some mistakes
* common mods subscription state between ugc and remote storage
* ugc: implement SetUserItemVote(), GetUserItemVote(), AddItemToFavorites(), RemoveItemFromFavorites(), favorite mods list is now save in `favorites.txt` in the user data folder
* ugc: make sure returned mod folder from GetItemInstallInfo() is null terminated & validate arg
* edits by Kola124 + other changes in the settings parser
* random ugc mod handle at object creation
* file size using std::filesystem + fix warnings + some print + arg validation