refactor: split controller into modular components, renamed to main
- main (renamed from controller): pure wiring
- visualizers/index: handles visualizer registry and types
- ui/menu-bar: generic menu open/close
- ui/params: owns cachedOpts, builds param controls + vis
- ui/preview: canvas sizing, preview lifecycle
- ui/render: click render → gather state → save