Prune unreferenced Git LFS objects
Description
LFS objects are kept even if all of the the commits that reference them are pruned, due to branch deletion or history re-write.
Proposal
Delete LFS objects which are no longer referenced by any commits in any project.
Currently, LFS objects are deleted based on project reference counts. Project reference counts don't get updated when commits are abandoned. If branches are deleted or history re-written, any commits with LFS pointers that later get pruned won't result in any change to the project's reference count on the objects. Project can end up not referencing the objects in any commits, but still maintaining a hold on it.
Propose using some method of reference counting by commit instead of project, and handling when commits are pruned.
!5901 (merged) addressed deleting these on project deletion, but in many cases you want to keep the project, but abandon a branch or re-write history to fix mistaken addition of bad data, without having to abandon the entire project.