These are bugs I discovered in the Rust implementation that also are in the Cython implementation (meaning the Cython version has the same or equivalent code), yet they don't cause an exception to get raised in the Cython version but do cause the Rust code to fail. I'm recording them here in case they aren't really bugs in the Cython version.

1. The loop in Simultion.run (not Simulator.run) was not always checking if the configuration was silent. One default implementation of `stop_condition` does check this, but the others did not. But it seems we'd always want to stop `Simulation.run` if the configuration ever goes silent. In the Rust code this was causing an infinite loop as it called Simulator.run repeatlyed, which never made any progress (BTW this was when do_gillespie = true, not sure if that matters). But I don't see how the original Cython code was correct without this check. I've not been able to test or try to reproduce that behavior in the Cython code yet.

