TSSIM/JESIM v40 - finite-fault stamp mode

This is a clean complete build folder based on v39.

New in v40:
- S toggles finite-fault stamp mode.
- In stamp mode, left click places one rectangular finite-fault patch.
- The first stamp in a fault group freezes that group's strike, dip, top/reference depth, true fault width, and patch length.
- Later changes to global dip/depth/width/strike do not rewrite patches already stamped in that group.
- Neighboring stamps in the same group are automatically bridged with intermediate stamps so the uplift footprint does not break into separated islands.
- N or Enter completes the current fault group. The next click starts a new fault group.
- Tab cycles fault groups for review.
- Z / X adjust manual strike for the next new fault in stamp mode.
- J / K adjust stamp patch length for the next new fault in stamp mode.
- Stamped nodes are saved with fault_id, patch_id, strike, depth, width, and length metadata in the preset CSV.
- Source markers use colored outlines for stamp fault groups.

Changed shortcut:
- S now toggles stamp mode.
- Ctrl+S saves station + forecast-zone CSV.

Kept from v39:
- Advanced node fine tune and multi-select, including Shift-drag box select.
- Real fault width in km and per-node dip/factor freeze.
- JESIM 5-minute observation packets with packet_meaningful_update.
- Shimizu removed.
- Transmit-only 60h cap.
- Fixed wall-clock 1x observation relay.
- No Y-axis flip in JESIM payload.

Not yet in v40:
- Full automatic subsidence recalculation after all faults are completed. v40 lays down fault patches/footprints first; automatic depression-field generation should be v41.

Build:
  build_win_mingw.bat

Run relay:
  python jesim_ws_relay.py
