5 singletons afectats: Audio, Screen, Director, Resource::Cache, Resource::List.
- static T* instance → static std::unique_ptr<T> instance
- init(): new T() adoptat immediatament per unique_ptr (ownership RAII)
- destroy(): instance.reset() (sense delete manual)
- get(): retorna instance.get()
- Destructors moguts a public perquè std::default_delete hi pugui accedir
(ctors privats + copy/move deleted → encapsulació efectiva mantinguda)
Ordre de destrucció preservat: SDL_AppQuit segueix cridant destroy() en
l'ordre invers a init() — la RAII automàtica no s'activa fins al final
del programa (LIFO de variables static).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>