This implements state DAGs, without support for federation.
A general overview:
- It adds a new room version and new event type.
- It adds a new field `calculated_auth_event_ids` to internal metadata.
- It stores the state DAG via new state DAG edges / forward extremities tables.
- It adds new auth rules as per the MSC.
- It uses the new `prev_state_events` field instead of `prev_event_ids()` when doing state resolution.