* reduce code duplication
* avoid bypassing local_storage when loading sounds
* avoid alloating sound buffers via new-delete, use std::vector
* clear/reset all global objects on destroy
but this avoids having to load the achievement icon during gameplay which causes micro-stutter
* avoid loading and resizing the achievement icon each time it's unlocked
* Local_Storage: avoid allocating buffers unless `stbi_load()` was successfull
* ignore all overlay requests if it's not ready
* when unlocking an achievement, only load it's icon if that was specified in the json
* restore the code for ImGui font builder, this is needed to load the glyphs for all languages
* revert the code which loads the achievements info even if the overlay wasn't ready
* attempt to fix the crash when closing the app, use global object with bigger life time and avoid local states
* attempt to fix usage of invalid/outdated window size when displaying notifications
* lock overlay mutex everywhere to avoid sync problems
* lock global emu mutex in the relevant places when using client APIs
* only change the ImGui ini and round corner settings once
* 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
* remove the now non-compiling (and awful) code which locks the cursor inside the overlay
* workaround for the deprecated ImGui function BeginListBox()
* formatting