Compartmentalize packfile store
The state for our packfiles is currently hosted in struct object_database directly, and there isn't really a well-designed interfaces available here. Due to this lack of a "proper" subsystem it's quite hard to iterate on it. Most importantly, this blocks moving packfiles into the ODB source as we want to do via Move packfile-related state out of `struct obje... (#547).