Add sideband support to PackFetchConnection
When we fetch from a remote system over the anonymous Git protocol
we don't have progress messages come back on stderr like we would
on an SSH connection. Instead we need to have them multiplexed on
the same stream as the pack data itself, and then split the data
on the client side to the proper locations.
Unlike C Git (and FetchClient before us) we avoid using threads
to do the de-multiplexing and instead perform this as part of the
InputStream implementation we pass off to IndexPack. This keeps
the our fetch code simple and avoids any issues related to thread
synchronization.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>