More sophisticated use of cat-file bulk revision processing in two stages

This change takes better advantage of the relative strengths of
`cat-file --batch-check` and `cat-file --batch` and combines them.

* Uses `cat-file --batch-check` to filter the set of all git objects in
  bulk, leaving only those that are candidate git-fat object references,
  based on the object being of type "blob" and of magic size(s)
* Uses `cat-file --batch` to read the full contents of all the candidate
  objects in bulk, for fast processing of their data to find the actual
  git-fat references.