Redux migration that pulls out existing RawThreadInfos from SQLite DB, "migrates" them to MinimallyEncodedRawThreadInfos (if they aren't already, but we're assuming they aren't), and then translates them back to ClientDBThreadInfo which gets persisted back into SQLite.
I'm fairly sure the logic in this migration is correct, but I still need to do additional testing. In initial testing I found some incorrect logic in convertClientDBThreadInfoToRawThreadInfo that was a little tricky because flow trusts that anything you JSON.parse(...) is the type you assign it to, which isn't always the case... Like with keyserverDB, we need to be careful about what external "raw string data" we're bringing "into the application." I will fix the logic errors, write some tests, and add some runtime validators to make sure the interface between "raw string data" stored in SQLite DB and our application is robust. I'll also just do another pass of the ClientDBThreadInfo <=> RawThreadInfo code to make sure everything is correct.
Depends on D10296