make writable dir cache non-static

the api remains the same - a DEFAULT instance is provided and the
current public static methods just delegate to it. However this
fixes testing conflicts and at some point users may want to have
their own caches with non-static properties.