(PUP-3555) Override-able cache expiration service
This commit introduces an override-able cache
expiration service for directory environment cache
entries. A caller may provide a custom implementation
of the expiration service, and it will receive
callbacks whenever a cache entry is created,
checked for expiration, or evicted.