halmd::cache: simplify read access

Extend cache<T> by constant operators '*' and '->' and a type cast to
'const*'. Thereby, the cache may be handled as a constant pointer to the
underlying cached type, greatly simplifying read access.

Further, free functions read_cache() and make_cache_mutable() are
provided. The former returns a constant reference to the cached data,
the latter constructs a cache_proxy<T> for write access. Together with
the auto keyword, they lead to concise code not cluttered by lengthy
type definitions, but cache access still being transparent.

Examples:

    cache<double> c(1.0);
    auto const& c_r = read_cache(c);
    assert(c_r == 1.0);

    auto c_w = make_cache_mutable(c);
    *c_w = 2.0;
    assert(*c == 2.0);
add Lua helper functions: assert_kwarg, assert_type

The function are supposed to foster simple and consistent argument
checking in the Lua modules.