[C++] Improve configuration for `get_config` command
This implements many improvements for the Configuration mentioned in !145 (comment 990427):
- Consistency fix for
setDefault(key, def)
by not marking the key as used - Consistency fix for
get(key, def)
by usingsetDefault(key, def)
- Adds
KVPGroup
andKVPUsage
enums for better filtering of all/user/internal keys and if they are used/unused - Replace
getAll
withgetKVPs
using the above mentioned enums - Replace
merge
withupdate
function that only updates used values - Moves
assemble
function toDictionary
class instead (will be used now in combination withgetKVPs
)