New encrypted export

* switch to xstream for serialization and deserialization
* use our own custom file format for encrypted backups

file format:
```
4 byte header length
header (serialized EncryptedBackupHeader protobuf)
encrypted xml contents with messages and identity key
```

importing flow: User types in password of backup, decrypts and inserts messages into db and replaces identity key. Removes all existing session state data. If user is TS registered, they will be unregistered and then prompted with registration once again.