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.
This refactoring will make a number of things easier. These didn't
really need to be in their own packages. Having them separate packages,
there are a few refactorings I've tried to do that end up with circular
dependencies due to things outside of `lfs` depending on `lfs`. Pushing
these into `lfs` makes refactoring simpler.