The cache for fixture files was being set without a TTL, which meant
that updates to the fixture files were not reflected in the cache.
This change saves the MD5 hash of the fixture file in a different key,
and compares it to the current hash of the file before deciding whether
to update the cache.
Fixes#2347
Guarantee that cache is initialized during startup, and only once,
instead of every time a `MetadataHandler` object is instantiated.
Also, improve logic to determine `fixtures` paths.