Refactor the cache handling in ProvenanceDB
- use TypedDict structures to properly type the caches needed by the ProvenanceDB objects,
- use only one (sha1, date) cache per entity, plus a set of added ids of objects (within the cache) (i.e. for revisisons, contents and directories).