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.
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
throw with a more helpful error than NullReferenceException

closes #5622
remove the overly complicated configurable MCV actor name hack