Transmission #040: Quest session state and acceptance rules (Step 7)

Added QuestSessionState: in-memory active quests (cap 5), no duplicate StatId line among actives, one successful accept per BoardInstanceId per session (abandon does not clear board consumption). Supporting types: BoardInstanceId, ActiveQuest, QuestAcceptFailureReason. PlayerStatTrackerProvider now exposes QuestSession for UI and boards in later steps. QuestSessionStateDebugKeys (auto-spawned with the provider) documents the flow: F10 accept a debug walk on board A, Shift+F10 same on board B, F11 second accept on board A (expect failure), F12 abandon. Edit Mode QuestSessionStateAcceptanceTests cover cap, duplicate template, board reuse, and abandon-vs-board behavior. Implementation plan Step 7 is checked off; next is the Quests inventory tab.