feat(display): implement DisplayManager with raw MD_MAX72XX
- Add include/display_manager.h: DisplayManager class declaration
- Two-zone layout: Zone 0 (top, laser time), Zone 1 (bottom, countdown/status)
- showLaserTime(), showCountdown(), showIdle(), showStatus(), setBrightness()
- rotateCCW() bitmap transformation for 90 deg physical module rotation
- charBitmap() for 17-character set (0-9, space, dash, dot, special chars)
- Add src/display_manager.cpp: full implementation
- Double-init pattern for SPI power stability
- showLaserTime() format: <10 -> ' x.x', <100 -> 'xx.x', <1000 -> ' xxx', else 'xxxx'
- showCountdown() right-aligned 4-char format
- All methods use writeZone() -> writeChar() -> rotateCCW() -> MD_MAX72XX
- Add test_sketches/test_display_manager.cpp: 6-step verification test
- allLedsOn/Off, showLaserTime (12 boundary values), showCountdown 5->0
- showIdle, showStatus (Err/AP/WiFi/oF), live simulation loop
- Update platformio.ini: add test-display-mgr environment
- Update src/main.cpp: integrate display.begin/showIdle/update
- Update Implementation-Plan.md: mark Phase 4 tasks 4.1-4.3 complete
Tested on hardware: all 6 test steps passed