A test framework for verifying concurrency anomalies

This is a good point. I'll have to think about how we can control the enumeration after a restart. The current restart logic allows the concurrent txns to continue without ordering after a txn restarts. This allows us to not get stuck waiting for impossible histories. There are many histories for which there's no possible way forward. What we need to capture is every possible way forward taking restarts into consideration. Will add a TODO for this. It's going to be too involved to add to this PR.