Code climate improvements to Spring Insight framework

[#59478422]
Factor out a file cache from the download cache

The file cache handles persistence of data, etag, and last modified
timestamp. It provides a means to ensure that certain operations are
performed in the file cache only when the associated lock file is
locked exclusively and it delivers the cached data after downgrading
the exclusive lock to a shared lock.

This lock downgrade is actually pointless as two processes cannot
share the lock if the only way to the shared lock is via a downgrade.

[#59478422]
Work in progress - base no work off this commit

[#59478422]
wip

[#59478422]
Rework tests

[#59478422]
Structural improvements

[#59478422]
Refactor spec helpers

[#59478422]
Test improvements

[#59478422]