Remove ability for Sniper to capture churches.
Changes ISpriteSource.Frames to be of type IReadOnlyList<ISpriteFrame>.

- Updated implementations to return a ReadOnlyList around an array (to reduce wasted memory from exposing lists or lazy enumerators around lists).
- Protect non-public ISpriteFrame classes by making them inner classes to prevent casting.
- Added an AsReadOnly extension method for lists.
Add Exts.ISqrt to avoid fp sqrt calculations.
new check for undefined actors
remove legacy actors as a test case
now that we check actors and players we can't exclude them
and another hit for invalid players
don't spam passed checks
only display lint check name when something goes wrong
tell us what you are doing
explain the strange console message
Merge pull request #5766 from RoosterDragon/read-only-frames

Make sprite frames read-only lists.
Merge pull request #5769 from Mailaender/actor-lint

Added a new OpenRA.Lint check for invalid actor definitions
Fix D2K paratroopers.
throw with a more helpful error than NullReferenceException

closes #5622
remove the overly complicated configurable MCV actor name hack
Merge pull request #5771 from Mailaender/hackyai-mcv-cleanup

Cleaned up HackyAI MCV deployment
Merge pull request #5772 from pchote/d2k-parachute-fix

Fix D2K paratroopers.
Use map.Contains for the observer shroud check.

Checking against the bounds directly is no longer valid.
LevelUpCrate