Expanding BackedSpeculationTest as basis for other tests (eg., that fail with diff probabilities, etc.).  Starting to refactor to allow this.
Refactoring BackedSpeculationTest to be a library that more tests can
use (eg., if we want to simulate occasionally failing during commit,
etc.).
Checks to ensure that number of completed events on hardware agrees with what we'd expect.
Minor refactoring to allow other tests to reuse logic in AlwaysWorksBackedSpeculationTest.
Added another test of speculation, which inserts random delays as part of commit process.