Assert repository state as seen by a transaction
TransactionManager's tests are currently asserting the repository's state only at the end of the test. This is not sufficient when testing concurrent transactions as we're interested also in how the concurrent transaction's affect each others state. This commit adds a new step that can be used in a test to assert the repository's state from the perspective of a given transaction.
This MR also adds a few new assertions using the new step. There's a new test added to ensure that deletions do not remove the repository before other transactions are done. Some assertions were also added in the test case that is testing multiple concurrent transactions. Currently transactions see each others committed changes immediately and are not isolated.