Fix thread synchronization problem with Sheet.dirty
MapCache performance improvements
Improved efficiency of startup methods.

- ShpReader will copy the input stream into memory just once rather than for every header.
- ShpReader.CopyImageData switched to use Array.Copy since that uses some unsafe magic for speed.
- In ActorInfo, cache a GetType call and prevent needless materialization in PrerequisitesOf.
- In ObjectCreator, cache type and ctor lookups since these are expensive and often repeated.
- Implement IReadOnlyDictionary<T, U> on Cache<T, U> to provide some supplementary functions.
- In TechTree.GatherOwnedPrerequisites, rearrange a Boolean 'and' expression to evaluate expensive functions later in the chain, and use ContainsKey to speed up name check.
Adding SDL2 window grab on loading the game. Made this behaviour configurable in the 'Input' tab of the Settings menu

Updated settings file for TD to expose the new 'Lock mouse to window' display configuration option

A text label notes that modifying the 'Lock mouse' check box requires a restart
Merge pull request #5590 from Happy0/sd2windowgrab

Closes #4977
add sublime text project/workspace to ignore
expand credits window a bit to fit the text better.
Merge pull request #5593 from RobotCaleb/misc_fixes

Expanded credits window a bit
Merge pull request #5505 from pavlos256/map-preview-generation

Map preview generation
Merge pull request #5484 from RoosterDragon/startup-efficiency

Improved efficiency of startup methods.