FileMigrationCheckpointStore
A checkpoint store that survives the process, which is the only kind that makes resuming real.
One small file per migration under directory. It is written to a temporary file and moved into place, so a process killed mid-write leaves the previous checkpoint intact rather than a truncated one — the failure this store exists to handle is the process dying, and dying during the write is not a special case.
A file is the right default because a migration is usually a job with a volume attached and no database of its own. Anything with somewhere better to put a cursor should implement MigrationCheckpointStore against that instead.