Reset downloads more consistently
Split off #17750 (moved).
When we go to reset downloads, I think we want to call:
- router_reset_descriptor_download_failures, and
- router_reset_status_download_failures.
But:
- router_reset_descriptor_download_failures doesn't reset:
- authority_cert_t.dl_status_by_id,
- cert_list_t.dl_status_map,
- bridge_info_t.fetch_status,
- routerstatus_t.dl_status
- router_reset_status_download_failures only resets fallback directory mirrors, and not anything that's just in the consensus.
We should do two things:
- reset all the download statuses and down flags we want to reset in one place, and
- call that function at startup (or when a download status is created) as well as when we HUP or want to reset failed downloads.
But when we do this, we should make sure we haven't created slow or fast zombies.