fix(diagrams): polish round 2 — 5 bugs fixed, 110 tests added
- setShapeRotation: normalize negative angles with ((a%360)+360)%360
- duplicateShapes: deep-copy style and points to prevent shared refs
- Export: stroke-dasharray on all shape types (was silently dropped)
- Export: per-color arrow markers (arrowheads match arrow stroke)
- Export: include arrows where at least one endpoint is selected
Also adds 110 new tests covering export arrows, rotation, resize,
group operations, history edge cases, and more.
Fixes #351