Simulation-Based Testing, Validation, And Training With Probabilistic Programming