Implemented IEquatable<T> to speed up equality comparisons.

Actor, CPos, CVec, WAngle, WPos, WRange, WRot and WVec structs now implement IEquatable<T> which means unboxing/casting costs can be eliminated.

Also simplified the ToString method by concatenating components directly rather than using a format string since the overhead is a bit high for simple cases like this.
Added MinBy, MaxBy, MinByOrDefault and MaxByOrDefault methods and replaced calls of the style OrderBy[Descending]().First[OrDefault]() which is not as performant.
Also implemented on the Bits<T> struct.
catch trait lookup in constructor

closes #5472
move RallyPoint lookup into a Lazy
update MapRuleStatus after download

fixes #5479
harden map search preview against invalid data

fixes #5492
calculate exitLocation before FrameEndTask

and add more null and dead checks to be safe
Fix thread synchronization problem with Sheet.dirty
open-ra.org → openra.net

closes #5500
Add IReadOnlyList
Cache some dictionary lookups in FrozenUnderFog.Tick.

Since FrozenUnderFog.Tick gets called a lot, these dictionary lookups were actually getting repeated a fair amount. Avoiding the repeated work is a minor performance improvement.
MapCache performance improvements
Simplify MoveAdjacentTo logic. Fixes #5445.
Merge pull request #5498 from Mailaender/invalid-map-key-download

Fixed KeyNotFoundException in ServerBrowser
add configure script to workaround library naming differences
separate make dependencies into CLI and bundled native ones
ralint is core and crashdialog (winform) tools
also search /usr/local/lib and /opt/lib
be more verbose about success and handle failure with an error