gc.sh: pack all refs when garbage collecting
A repository with many refs (e.g. thousands) can incur a large
performance penalty when performing some simple operations such as
those used by gitweb.
Pack all refs whenever a repository is garbage collected to help
mitigate the performance issue on repositories with large numbers
of refs. Pack refs is performed before the repack to match the
normal order of a git gc command.
Having a packed-refs file used to be problematic due to the way
in which ssh push was set up -- refs stored in the packed-refs
file could not be deleted by ssh push clients because of the way
the permissions were set. That issue was permanently eliminated
when fixupd was removed so there's no reason to avoid having a
packed-refs file now.