Move system directory cache out of utils

Similar to #2049, `git_futils_*` would be nice in another project, but the directory caching mechanism means that I cannot simply use `fileops.c`.  Moving the system directory caching mechanism out into its own file(s) means that I can now use `fileops.c`.