Include Git-repo state description in jar name and buildinfo

It's useful to have a precise identifier when benchmarking one jar
against another!
Make BFG report dirs have names that are unique to second accuracy

Need this for benchmarking the wine repo task, which takes around 40
seconds.
record cache stats...
Use separate caches for commit, tree, tag etc

Remember to define the overall map-of-things-cleaned to include these.
Get closer to future work, use specific git-type cleaners
Add a convenience method for nonSymbolicRefs
Tidy up generation of ProtectedObjectDirtReport

Easier to think of it as the diff between the runs of two very similar
ObjectIdCleaners, one of which has Object-Protection turned off.
Tweak blocking ObjectIdSubstitutor to be a bit more like the async version

Just trying to make the transition it futures a bit smaller - this isn't
necessarily the best way to write a /simple/ blocking version, especially
given the object-id-mapping-function is memoised.