copied over the cache and datasource/File classes from arroyo/Erdiko into core (here), made some minor refactors, tests need to be updated to reflect the refactors