Add support for dehydrated devices
This will help resolve some edge-cases where UTD errors can arise in the following cases:
- All devices for a user have been logged out
- On room invite, MSC3061 key forwarding forwards old room keys to a user A's device 1. User A's device goes offline and User A creates device 2. Device 2 will not get the forwarded keys
In case its helpful, here is corresponding rust code that has unit tests following the dehydration/rehydration process. FFI bindings should have the similar API: https://gitlab.futo.org/circles/matrix-rust-sdk/-/blob/main/crates/matrix-sdk-crypto/src/dehydrated_devices.rs?ref_type=heads#L491
FYI, I don't believe the corresponding MSC have been enabled yet on the prod/dev servers Required MSCs are now enabled on the development and production servers