Change indexes into tile arrays to be stored as bytes to save memory.

The index value needs only be big enough to handle all defined terrain types. This is a low number so we can save memory by defining it as a byte. This particularly saves memory for the CustomTerrain field in the Map class, which defines a cell layer for the map using tile indexes, so we can reduce the size of that layer 4x as a result.
Don't store pre-calculated texture coords in Sprite.

By storing only the four corners, we can save the object overhead of an array and 4 float elements per sprite. This results in savings of around 5 MiB to store these coordinates.
HashSet<byte> => BitArray resourceTypeIndices

BitArray can store 256 bits in 32 bytes plus overhead (pointer & length),
which gives it better memory locality too (<= 2 locations in memory).
Also, the actual count will be much less, probably at most around a dozen.
This might not impact performance, but the AI is dumb & HashSet<byte> is
clearly inefficient.
Changed Vertex constructors to pass more parameters as plain floats.

This avoids callers having to construct a float2 struct, only to have the Vertex constructor unwrap it into individual components again.
Don’t regenerate the lua player bindings each query.
Merge pull request #6698 from RoosterDragon/memory-savings

Small memory savings
Merge pull request #6736 from pchote/fix-player-binding

Don’t regenerate the Lua player bindings each query.
Added OnInfiltrated function to lua
Added Kill function to lua
Added two diplomacy functions to lua
Allowed changing the actor owner with lua
Registered all new files
Ported monster-tank-madness to lua