parse_fetch_refspec(): clarify the codeflow a bit

Most parts of the cascaded if/else if/... checked an allowable
condition but some checked forbidden conditions.  This makes adding
new allowable conditions unnecessarily inconvenient.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
fetch: fetch objects by their exact SHA-1 object names

Update "git fetch-pack" and callchain leading from fetch_pack() to
do_fetch_pack(), which did not use struct ref abstraction to pass
what remote refs were requested, and instead passed around a vanilla
string list that does not know anything about what it represents.
Now the callchain uses "struct ref" to record what was requested by
the user.

The above change should be split out to its own commit.

The callchain leading to everything_local() assumed that the set of
remote refs we learned from get_remote_heads() is a superset of
everything we could fetch, and did not consider there may be other
things that is known to the "sought" list to be obtainable.  Correct
this by adding requests to fetch objects by their exact SHA-1 object
names to the real refs the remote has, when the server side advertises
the allow-tip-sha1-in-want capablitiy.

Signed-off-by: Junio C Hamano <gitster@pobox.com>