q3map2 changes:
- BRX1 backward-compatible BSP extension (always v46, extra lumps
after header with magic + overlap detection)
- -lightmapsize N stores pages natively in BSP via EXT_LUMP_LIGHTMAP_INFO
- -extlmhacksize N unchanged (legacy external TGA + custom shaders)
- SH grid moved from v47 lump 18 to BRX1 EXT_LUMP_LIGHTGRID_SH
- Removed v47 version logic
- MSVC fix: noexcept move ctor for entity_t (std::list move not noexcept)
Implements a new SH light grid that runs alongside the legacy Q3 light grid,
storing 9 RGB L2 spherical harmonic coefficients per grid point for accurate
directional lighting of dynamic objects from all angles.
BSP format: v47 with 19-lump header (160 bytes) when -sh is used, v46 with
17-lump header (144 bytes) otherwise. SH data stored in LUMP_LIGHTGRID_SH
(index 18) with a header containing grid bounds/size/mins followed by the
coefficient array. Stock Q3 engines read v46 lumps unchanged.
New CLI flags: -sh (enable), -gridscalesh (density multiplier, default 2x),
-gridsh (explicit cell size). SH grid receives bounced light with -bouncegrid.
Also adds libjpeg-turbo as a proper build dependency with its own vcxproj,
fixing the previous external engine path requirement.