makeSimulationRunCache

Builds the optional SimulationRunCacheIfc for an evaluator from eval. Returns null when EvaluationSpec.useSimulationRunCache is false, mirroring the engine's "no cache" convention.

Exposed (rather than kept private) so module-external tests can verify the spec → engine cache mapping; Evaluator does not publicly expose its simulation-run cache, so this is the only direct point of inspection.