protocol/fetcher: Introduce `RefsToFetch` and tidy
Using empty Vecs to mean “all refs” can be confusing. Avoid the chance
of confusion by introduction of a new type that clearly describes which
refs should be fetched.
Using empty Vecs to mean “all refs” can be confusing. Avoid the chance
of confusion by introduction of a new type that clearly describes which
refs should be fetched.