54560436 addendum (always call StopBuild)
fix #3715: make all info-textures individually queryable by Lua (gl.Texture)

notes:
  "$info" and "$extra" still map to the active info-texture as before
  "$info_losmap" or "$extra_losmap" map to the  L-view texture
  "$info_mtlmap" or "$extra_mtlmap" map to the F4-view texture
  "$info_hgtmap" or "$extra_hgtmap" map to the F1-view texture
  "$info_blkmap" or "$extra_blkmap" map to the F2-view texture

  textures contain no data until user switches to their respective modes
  non-active textures are not updated in the background, so will go stale
  (might be better to automatically delete them after N frames, undecided)
fix #3924: add callout Spring.UpdateInfoTexture(number texMode) --> boolean
fix #4080
ws
msvc compile fixes
remove MT links from installer
BaseGroundDrawer: consistently use unsigned char*
SMFFragProg: fix '#version must occur before any other statement'
BaseGroundDrawer: move drawMode checks outside UpdateExtraTex (cleaner)
LuaUnsyncedRead:
  add callout Spring.GetVisibleProjectiles(
    number allyTeamID,
    boolean addSyncedProjectiles,
    boolean addWeaponProjectiles,
    boolean addPieceProjectiles
  ) --> nil | {[1] = projectileID, ...}
fix symbol-name conflict (CFeatureQuadDrawer already existed)
remove "GML:" from info (always false)
thanks silentwings!
filter unsynced ID's from GetVisibleProjectiles and GetProjectilesInRectangle
fix #4089
fix #4092
style
update submodule pr-downloader & Shard
update shard: fix compile
update release checklist