feat: implement story 3 (Factions) with Allium spec and fast-check properties
- Add .pi/specs/story-3-factions.allium with formal spec for faction rules
- Add src/factions.spec.ts with 26 fast-check properties covering:
- joinFaction / leaveFaction (add, remove, idempotent, dead no-op)
- isAllyOf (shared factions, symmetry, self-not-ally)
- dealDamage blocks ally damage
- healAlly (allies only, capped, dead no-op)
- Implement Character methods: joinFaction, leaveFaction, isAllyOf, healAlly
- Modify dealDamage to check ally status before applying damage