Reduce speed penalty for vehicles on certain terrain types.

The old one were a bit harsh.
Fixes two music track titles
Adds various crate effect sequences, removes levelup ra backfall.
Adds sequences for flameall, scorch and crater marks, and smoke placeholder
adds muzzle sequences for vehicles
Set Tick value for various TS infantry sequences to 80
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.
Fixes #5394 Spawnpoint dropdown count

Fixes where the spawn point dropdown would show the same number of spawn
points as the number of players rather than the actual number of
available spawn points.
Unify settings for solution and project setups.

Create a single solution platform named x86.
Ensure both Debug and Release configs build to the root for all projects.
Ensure all Release configs generate pdbs.
Added MinBy, MaxBy, MinByOrDefault and MaxByOrDefault methods and replaced calls of the style OrderBy[Descending]().First[OrDefault]() which is not as performant.
Changed removeActorPosition field in ActorMap into a set.

This is because it's purpose is to be queried via Contains when actors needed to be removed.
Adds several previously missing weapons, resets Versus values to original TS values

Fixes flameall.shp to cover 8 directions instead of only 4
Fixes bounds, offsets, FireDelays and weapons for some infantry
Fixes offsets, adds muzzles and Turret ROT values for several vehicles.

Adds cloak sound to stealth tank.
Adds Scorch and Crater marks to world, adds Heavy start unit support for testing purposes
Also implemented on the Bits<T> struct.
Changes to reduce allocations in the main loop.

Targeted some methods that generated allocated a lot of memory in the main game loop:
- Actor.Render - Changed LINQ calls into equivalent loops. No allocation for delegates.
- Animation.Render - Returned an array rather than a yield expression. The array uses less memory than the complier generated enumerable.
- FrozenActor and FrozenUnderFog - Materialize the footprint into an array: The enumerable is not-trivial to evaluate is and evaluated many times inside the Tick function. The memory needed is minimal. Changed LINQ into equivalent loops to prevent delegate allocation. Should result in overall much faster calls.
- Widget.GetEventBounds - Changed LINQ calls into equivalent loops.
- MobileInfo.CanEnterCell - Changed LINQ calls into equivalent loops. Don't materialize list of blocking actors every time, instead enumerate them and only when they need to be checked.
- FrozenUnderFog.TickRender - Generate the renderables lazily and also remove a no-op Select call.
Reduce Grenadier dmg vs. heavy from 50% -> 35%

Grenadier is a wee bit too powerful vs. everything. 
This will keep its value vs. heavy armor still very high, but not OP like it is for the cost. 
(Grenadier will still have highest DPS vs. heavy as a function of cost, after this nerf).
General uncontroversial cleanup:

- Made private methods static where possible (runtime can elide checking the object for null).
- Declared attribute classes as sealed (allows reflection on attributes to complete faster).
- Moved some static cctor's into field initializers (static cctor's are slower than static field initializers).
- Made classes static if they contained only static methods (can't create instances of useless objects).
- Use inferable Exts.Lazy and not new Lazy<T>().
- Added required STAThread attribute to CrashDialog.
- Removed unused parameters in private methods.
- Added Serializable attribute to exceptions.
- Added parameter name in calls to ArgumentNullException.
- Use of as operator instead of is + cast.
- Changed (x as Foo).Bar anti-pattern into ((Foo)x).Bar. Results in sensible cast exceptions on error rather than null dereferences.
- Removed unused method in NullShader.
Fix #5414