Fix all deferred code quality items
1. childIds direct mutation bypasses emitter (CRITICAL):
Added SceneGraph.insertChildAt() — removes from old parent, inserts
at index, emits node:reordered. Replaced all direct childIds
filter+splice in structure.ts (wrapSelectionInContainer, ungroup,
bringToFront, sendToBack) with insertChildAt().
2. Canvas input orchestrator 815→461 lines:
Extracted input/move.ts (215 lines) — move drag, snap, reparent
Extracted input/select.ts (172 lines) — hit resolve, select, hover
Extracted input/draw.ts (32 lines) — shape drawing
3. PropertyListContext generic typing:
PropertyListContext<T> — items, add, update, patch all typed.
usePropertyList<Fill>() gives Fill-typed context.
Added missing patch to context and PropertyListItem.