Print filenames for objects in `status` output with '--filenames' option

The '--filenames' option makes it easy to view the filename represented
by a git-fat object reference, at the cost of a slight performance
and memory hit compared to the plain `git-fat status` command.

This option is most helpful when you are thinking about running
`git-fat gc` to clean up some garbage/unreferenced objects, so you
can check what you are about to delete.

* Add referenced_objects_with_filenames() method that (optionally)
  stores file name data while looking up git-fat referenced objects.
* Refactor referenced_objects() method to use the above method while
  providing existing interface.
* If '--filenames' option is given to the `status` command, print
  filename(s) next to git-fat object hash values.
Reduce memory consumption of status --filenames option.

Throw away mappings of git hash value to filename(s) for objects that
are not relevant to git-fat. Since we can do this clean-up during
processing, this change should minimise the memory cost of using the
--filenames option since uninteresting filenames are no longer stored.
Merge remote-tracking branch 'jmurty/print_filenames_for_objects_in_status_command'