IC & TS: allow complete destruction of the shared ImageCache.

Previously, destroy() would fully delete a non-shared IC but in the
case of the global "shared" IC would just do a cursory invalidate of
the files.

This patch adds a parameter to the destroy() methods that, if true, will
do an even more thorough destruction of the underlying IC -- a full
invalidate_all(true) followed by releasing the shared pointer and (when
nobody else is still holding it) fully destroying the IC.
Also refactor ImageCache::invalidate_all to severely streamline when
force==true.

Default behavior doesn't change, but you can use this parameter to force
a full destruction of the underlying IC, even if it's the "shared" one,
for apps that want to be completely sure that they fully reclaim the
memory and all other resources held by the IC.