generalize MoveFlash as parametrized SpriteEffect
add the sonar pulse

closes #4729
add a ripple animation based on the move flash
generalize into SpawnActorPower

closes #5724
Refactoring pass.

- Extract an enum for edges rather than using magic numbers for everything.
- Remove duplicated code between FoggedEdges and ShroudedEdges by hosting the visibility function into a delegate.
- Make minimap methods more readable.
- Tidy formatting.
- Make some fields readonly.
- Remove unused usings.
Sped up shroud rendering.

- Only update shroud within the visible screen area, rather than the whole map. This improves performance on larger maps significantly when scrolling around since large portions of the shroud do not need to be updated.
- Provide methods in Shroud to return delegates to check for explored/visibility for tiles within a certain region. This allows it to return more efficient delegates whenever the region is within the map bounds, or shroud/fog is disabled. In the typical case where the region is in bounds and shroud/fog is enabled, the fast check is almost twice as fast as the slow check.
- Use the Shroud delegate functions in shroud rendering, frozen actors, minimap rendering and resource layer areas to provide a speedup since these areas of code can often take advantage of the fact they perform checks within the map boundary.
- Cache current element in CellRegionEnumerator to prevent repeated work if the element is accessed more than once.
- Decrease the size of elements in some arrays in hopes of reducing memory needs and improving cache hits.
Move ProneDamage modifier from TakeCover to Warhead.
Rename it to ProneModifier and convert it to integer.
Applies most TS prone damage values to TS mod.
Merge pull request #5698 from Mailaender/sonar

Added the sonar pulse to reveal sub marines
Merge pull request #5824 from reaperrr/pronedamage

Moved ProneDamage to Warhead
make GetSpawnOccupants more robust against invalid list queries

fixes #5588
Add tech levels to TD.
Remove super-spammy debug messages.
Reorganise AI base building logic.

- Now obeys defined structure percentages and limits.
- Faster.
- More readable and maintainable code.
Fix the bogus D2K AI definitions.
Fix NRE if a unit is damaged without a warhead.
Merge pull request #5894 from pchote/warhead-nre

Fix NRE if a unit is damaged without a warhead.
Merge pull request #5833 from pchote/cnc-techlevels

Closes #3221
add parachute corpses

fixes #5893
check if the host building is gone

fixes #5670