Renamed Checkable to DownloadCheckable because it only applies to download,
upload checks differently and uses different struct fields. Incorporated
with download_queue.go since code is now smaller & common.
Go back to requiring a count and size up front, but better track and
display files that are skipped because they don't need to transfer. This
makes it easier to judge what is happening based on the progress output.
This is a fix for a bug in the handling of the GIT_LFS_PROGRESS file
which is used by desktop apps, or other things integrating with the
git-lfs binary.
At a later point, we should move toward a more unified progress tracking
which supports this file as well as the pb progress bars via a single
API.
Reorganize the transfer queue to provide a channel to watch for object
OIDs as they finish. This can be used in the `get` command to feed a
goroutine that will copy the file to the working directory and inform
the update-index process about it as the transfers finish. This leads to
a greatly reduced amount of time spent updating the index after a get.