(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.
Merge pull request #3260 from cprice404/feature/master/PUP-3555-cache-expiration-service

(PUP-3555) Override-able cache expiration service