Add smudges to TS weapons
Fix Laser Turret and Nod SAM Site selection bounds
tidy cnc mod dll
Create a separate FrameCache for caching sprite frames.

We split the caching SpriteLoader into a SpriteCache and FrameCache. SpriteLoader instead becomes a holder for static loading methods.

Only a few classes loaded sprite frames, and they all use it with a transient cache. By moving this method into a new class, we can lose the now redundant frame cache, saving on memory significantly since the frame data array can be reclaimed by the GC. This saves ~58 MiB on frames and ~4 MiB on the caching dictionary in simple tests.
MCV no longer loses controlgroup when transforming
Fixed ICrushable not being triggered properly
Fix HQ rules in nod03a and nod03b.
Fix the in-game widget hierarchy.
Add world desaturation to TD end-game menu.
fix syntax errors
Merge pull request #6741 from Mailaender/tidy-cnc-dll

Tidied the Tiberian Dawn mod DLL
Fix RenderGunboat wake animation
Merge pull request #6767 from huwpascoe/crush-fix

Fixed ICrushable not being triggered properly
Merge pull request #6769 from pchote/fix-nod3-hqs

Fix HQ rules in nod03a and nod03b.
Merge pull request #6758 from RoosterDragon/fix-spriteloader-overcache

Create a separate SpriteFrameLoader for caching sprite frames.
Support changing owner from within scripted maps.
Use INotifyOwnerChanged for updating internal references.
Fix gdi01 landing craft unload waypoint
Fix gdi02 harvester not harvesting and more
Fix TD gunboat "turret" offsets