Download the packfile
Negotiate what objects should be downloaded and download the packfile with those objects. The packfile is downloaded with a temporary filename, as it's final name is not known yet. If there was no packfile needed (all the objects were available locally), filename will be NULL and the function will return success.
0 or an error code