- Only have a single database for all tests, like CI.
- Calling `PrepareDBConnectionString` drops all tables before returning
the string.
- Tests must be run with no concurrency else they will step on each other
due to the previous point.
This should prevent cases where local tests pass but CI fails.
We lazily load timelines for rooms as the client fetches them. If a previously
lazily loaded timeine goes out of the window then back in it results in a
DELETE/INSERT. We would detect that we already have a timeline for this room
and just return that, however that timeline was stale. We now keep this timeline
in sync with live events.
With regression test.