cli_introspect.cpp:
Replace `stdout = tmp;` / `stdout = old;` with an RAII fd-level
redirect via dup/dup2 (POSIX) or _dup/_dup2 (Windows). The C
standard does not require `stdout` to be an assignable lvalue;
Apple/Windows clang reject it, breaking the macOS arm64 and Windows
x86-64 / arm64 builds.
tests/CMakeLists.txt:
Link test_editor_units against glm::glm when the target is
available. tools/editor/npc_spawner.hpp transitively pulls in
<glm/glm.hpp>, which fails on the macOS runner where glm is found
via find_package but the test target wasn't picking up the include
paths.