Fix up "for_each_ref()" to be more usable, and use it in git-fsck-cache

It needed to take the GIT_DIR information into account, something that
the original receive-pack usage just never cared about.
diff --git a/receive-pack.c b/receive-pack.c
index 53d00a5..d05f7d5 100644
--- a/receive-pack.c
+++ b/receive-pack.c
@@ -7,7 +7,7 @@
 
 static const char *unpacker = "git-unpack-objects";
 
-static int show_ref(const char *path, unsigned char *sha1)
+static int show_ref(const char *path, const unsigned char *sha1)
 {
 	packet_write(1, "%s %s\n", sha1_to_hex(sha1), path);
 	return 0;