Add object copying to native pack transport and bundle transport
When fetching refs over the native pack transport we have to tell
the other side what we want, and what we have, until the other side
is able to compute a pack that gives us the data we don't have.
This is essentially the logic we have in FetchClient, but I have
rewritten it to take advantage of RevWalk and the more modular
transport API. In the future FetchClient will disappear.
When fetching from a bundle we only need to pass the remaining data
through IndexPack, as there is no concept of partially fetching
from the contained pack.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>