Convert loose object maps to work on loose object sources
The loose object map is currently written to operate at multiple levels at once:
- It works on the generic
stuct odb_sourcelevel. - It also works on the higher-level
struct object_databaselevel.
We should refactor the subsystem to work entirely on top of a struct odb_loose_source. Management of different sources needs to be moved into the object database layer.