fix(diagrams): 8 QA bugs — text editing, rotation, export, eraser undo
- Inline text editing: mousedown guard prevents canvas clicks from
destroying active textarea (BUG-1)
- Eraser drag: adds pushHistory() before removing shapes (BUG-2)
- Opacity slider: adds pushHistory() before changing opacity (BUG-3)
- Line tool: switching tools now finishes or cleans up line state (BUG-4)
- Rotation: negative angles normalized with ((a%360)+360)%360
- Export: includes shape opacity via <g opacity="..."> wrapper
- Export: uses per-shape fontFamily/fontSize instead of defaults
- Export: line/freehand point bounds offset by shape.x/y
Also adds 66 new QA tests covering untested code paths.
Fixes #350