Make frontend pages configurable instead of hard-coded

- add a YAML config to define pages, plots, and layout
- validate and load the config in the frontend server
- render pages with a single generic template
- build sub-navigation from the config
- update tests to read pages from the config
- ignore runtime data/toolkit folders
- split page configs into an index plus per-page YAML files
- add soft-fail handling for invalid page configs with a dedicated error page
- add tests for invalid page config rendering
