Add SiloManifestViewer widget that opens in an MDI subwindow when the
user double-clicks the Manifest node in the Silo tree. Displays all
manifest.json fields in a read-only QFormLayout with copy buttons for
Part UUID and Silo Instance.
New files:
- silo_viewers.py: SiloManifestViewer widget + create_viewer_widget()
factory with _VIEWER_REGISTRY for future viewer classes
Modified files:
- silo_viewproviders.py: doubleClicked() wired to open MDI subwindow
with deduplication via widget objectName()
- CMakeLists.txt: add silo_viewers.py to install list
Closes#38