Add support for dehydrated devices
Closes circles-ios#301 (closed)
Changes overview:
- Device rehydration occurs on a weekly basis (tied to default room key rotation duration) to refresh one-time keys
- If our device is missing a room key, device rehydration also occurs (we first attempt to use regular room key requests first before using rehydration)