Add a "Spells" button during adventure room windows allowing the human
to cast hand spells targeting the hero currently mid-crawl (not just
entrance-queued heroes). The adventure modal stays open across the cast,
narrates spell effects as banners, and correctly resumes the walk
afterward without skipping rooms.
Key changes:
- New `adventurePause` walk type and `ADV_RESUME_MARKERS` to mark the
boundary between a cast's own effects and resumed walk events
- `findHero` now locates heroes in `adv.walking.hero`
- `showPickModal`/`showReactModal` accept custom callbacks to stay
inside the adventure modal session
- `driveAdventureWindowDecision` routes window/react decisions to the
modal UI instead of closing it
- AI window/react turns are computed and revealed via a "has cast:"
overlay before applying
- `applyAdventureWindowChoice` applies choices directly to the engine,
splits events into narration vs resumed walk, and plays banners
- New event types (`roomBoosted`, `heroHurt`, `heroHealed`, `heroFeared`,
`heroTeleportMarked`, `heroesBlocked`, `soulBurned`, `handReset`)
render as banners in the narration pipeline
- Two new verification tests for mid-walk targeting and fearHero safety