Implement canvas 2D state management & transformation matrix (Phase 18)
Add Canvas2dState, Canvas2dContext, and AffineTransform to the dom crate,
with full state stack (save/restore) and CTM operations (translate, rotate,
scale, transform, setTransform, resetTransform, getTransform). Wire up JS
bindings on the CanvasRenderingContext2D wrapper object. 25 Rust-level and
10 JS integration tests covering all transform operations, nested
save/restore, edge cases, and matrix inversion.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>