Introduce cache.memory_ratio configuration for HPCache

New set-and-forget configuration that specifies cache size as a ratio of the
old generation max size. Memory division across internal components of the cache
is handled by fixed ratios.

If any of the old config (now referred to as "advanced config") is set, it will
override the memory_ratio configuration.
Naming could be better here. I like to have names of implementing classes that describe what it does and what the purpose is. In this case it is an implementation that fetches the actual value lazily and then caches it. `LazyOptional` might be a better name.