SLOW CHESS 2.96 - 2026 EDITION - CHANGES SUMMARY

Removed dead code: searchtt.cpp, SwbSettings::Save/Load, GetCurDir/SetCurDir
(+ related macros), unused var sNone, unused global nSecsPerMove.

Fixed bugs:
- IsLoaded(): pointer truncated to int -> now m_pData != NULL.
- Load(): unchecked fread/malloc, possible div by 0 -> now validated.
- UCI_LimitStrength: wrong uint8_t cast made throttling never trigger
  on Linux -> fixed to unsigned int.
- "go movetime N": parsed but never used -> now actually sets think
  time; wtime/btime/movestogo path unaffected.
- UCI_Elo "max" was printed with %f on an int -> always showed 0.
  Fixed to %i.
- uciStartup()'s 40000x NewGame() timing benchmark (~150-200ms,
  weak/noisy hardware signal) replaced with a fixed value (3000).
  Old code kept as a comment. Startup now ~30ms.

New: "perft <depth>" command (perft.cpp), works in XBoard and UCI.
Completes all 4 promotion types (engine's own generator only does
Q and Q+N) so counts match standard references. Verified against
known perft values (startpos, Kiwipete, promotion test position).

-fpermissive no longer needed: HANDLE retyped to neosmart_event_t
instead of void*; ThinkingThread signature made platform-conditional.
