New repo-updater scheduler
Created by: nicksnyder
This PR implements a new scheduling algorithm for repo updater. The existing logic in reposlist.go is complicated and hard to follow. The proposed code in this PR is about 2/3s the size of the previous scheduler and I think is much easier to follow since it splits the system into two parts: a scheduler and an updater.
I did not make any attempt to solve other known problems (i.e. supporting repo renames), but I don't think I made any of these problems worse.
GitHub helpfully collapses the most interesting file in this diff: scheduler.go.
This is feature flagged and off by default, so I would like to merge this as-is.
I will open a followup PR to address observability.