[backfill] keep what changed on a repo row while its backfill fetched master
a backfill read the repo row before resolving and fetching, then wrote that copy back with its new root, so a deactivation, takedown or identity change that landed in between was lost, and BackfillFinished then marked the repo synced and active. both persists now re-read the row under the repo lock they already hold and put only the backfill's own changes onto it. RepoState::rebased keeps the status and identity a writer didn't touch, never moves a root back to an older rev and only moves event times forward. the doc a backfill resolved is older than any identity written during the fetch, so that identity wins. BackfillFinished leaves a repo that went inactive with its status and a gone resync entry, like a backfill that found the account inactive.