fixed letters_from_lexington and narrowed map
updated pirates_and_emperors
Moved start location, added many trees.
Fix strategic map replay exception
Merge pull request #5380 from pavlos256/strategic-replay-crash

Fix strategic map replay exception
updated pirates & emperors - no TEMPERAT trees
All trees are from the original C&C Desert tileset. Made a few tiny
changes to layout as a result.

The dense tree/cactus/rock areas near the bases have been thinned out
slightly.
Replaces uncompressed sniper.shp with a  XCC-Mixer-compressed version.
Merge pull request #5367 from psydev/mapfix

Updated 2 of psydev's recent TD maps -- minor fixes
Merge pull request #5385 from reaperrr/sniper-fix

Replaces uncompressed sniper.shp with a  XCC-Mixer-compressed version
Minor shp fixes.

Removed green pixels from mine.int, fixed a few non-remapable red pixels on afldidle.shp.
Compressed some more uncompressed shps in ra bits folder.
Compressed/re-compressed cnc mod shps.
Merge pull request #5388 from reaperrr/shp-fixes

Various RA/TD mod shp fixes
Give PerfTimer the ability to write only slow operations to the log

This is useful to ignore fast operations that just spam the log.

The class had to be reworked because it couldn't properly handle cases
where all of a node's children where below the threshold.

Also changed DoTimed() and RunActivity() to use PerfTimer.
Preload sequences and fix #5382
Merge pull request #5389 from pavlos256/preload-sequences

Preload sequences
Add metadata block to replays

The replay files are just streams all network communication so to
get any info out of them it is necessary to play back the stream
until the wanted information is reached.

This introduces a new metadata block placed at the end of the
replay files and logic to read the new block, or fall back to
playing back the stream for older files.

The replay browser is also updated to use the metadata information
instead of reading the replay stream directly.
Add filters to the replay browser dialog

This closes issue #2152. The filters added are:

* Game type (singleplayer / multiplayer)
* Date
* Duration
* Outcome
* Player name

Other changes:

* Added a 'CollapseHiddenChildren' option to the ScrollPanelWidget to
make hidden children take up no space.
* Removed the extension (.rep) from the replay filenames in the
replay browser.
Style & nit fixes
Support for input validation on TextFieldWidgets

See OnTextEdited(), IsValid(), TextColorInvalid (with the default in metrics.yaml).
New common dialog: TextInputPrompt to get a string from the user

For both ra and cnc