refactor(sampling): decompose MCMC engine and clean up core modeling
- Refactor `runSampler_NumPyro` god-function into a modular architecture:
- `context.py`: Centralized state management via `SamplingContext`.
- `execution.py`: High-level flow control for fresh starts and resumes.
- `phases.py`: Isolated algorithmic stages (Warmup, Convergence, Production).
- `sampling_utils.py`: Stateless helper utilities.
- Core Modeling & Cleanup:
- Remove dead code: deleted `gp_models.py` and unused `PlModel` GP methods/attributes.
- Fix bug in `core.py` where normalization scope `per_instrument` was broken.
- Fix bug in `numpyro_model.py` where unconfigured logging printed `PlModel` repr.
- Fix misleading `@staticmethod` decorators in `detrending.py`.
- Add missing docstrings to core model functions.
- Improvements & Fixes:
- Make `internal_warmup_if_nuts` warning conditional on NUTS activation.
- Fix stale imports in `tests/test_gp_per_visit.py`.
- Update logging consistency in `pdf_report.py`.