Rather than relying on SDSKeyValueStore returning nil when
keyed-archive data can't be decoded, do the decoding step in
SSKSessionStore, where we can explicitly allow it. Then write a test
that approximates having the old session data stored.
Note that this may cause some session rebuilds to occur for any
recipients in the iOS client's session store which have devices whose
session records have not been written to in over 3 years.
`srand` is not accessible in swift. Remove `srand` anyhow as anything
using `rand` for any actual randomness should be considered a bug in
need of fixing rather than viewing `srand` as an acceptable workaround.
Also:
- Remove AtomicUInt's @objc, it's no longer used from ObjC
- Remove Codable conformances, they would implicitly use shared locks
and weren't used in practice