feat(simulation): template instantiation engine — load, spawn, lifecycle (#161)
Add content::instantiation module with:
- instantiate_template(): validates FullTemplateDef, calls
spawn_template_npcs, generates TriangleState entities with ActiveSim,
registers in ActiveTemplateInstances resource
- unload_template(): despawns all NPC + triangle entities, removes
from tracking
- load_template_from_file(): YAML → FullTemplateDef deserialization
- ActiveTemplateInstances: BTreeMap-backed resource (D-010 determinism)
Integration tests: end-to-end logistics-hub.yaml instantiation (4 NPCs,
2 TriangleStates), lifecycle (instantiate → unload → clean), determinism
(same seed = same layout), error path (missing file).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>