While STL containers are not guaranteed to build with incomplete types,
`rtengine::Cache` used to build with `std::map` as well as
`std::unordered_map` when I first implemented it. With GCC 6.3 I
recently realized, that this was no longer the case for hashable keys
(i.e. `std::unordered_map` as `Store`).
The recommended workaround is to use a `std::unique_ptr`.
This commit adds a true LRU cache to `rtengine` which is used in the new
`CLUTStore` class. The code in `clutstore.*` was cleaned up with C++11
features and small optimizations taken from my `clutbench` project.
The `CLUTStore` class was converted to a true singleton.