feat(storage): improve clarity of offline garbage collection log output
Investigating #677 (closed) it became apparent that the current log messages emitted by the offline garbage collector are relatively confusing. This change seeks to clarify:
- the difference between repository scoped manifest metadata and manifest blobs held in common storage
- when manifests are marked by tag and how many tags reference that manifest
- what stage (mark or sweep) garbage collection is in
- what storage driver is being used
- is dry run mode enabled
Also, this change makes better use of structured logging.