Fix fstring
Add comments explaining execution of normalize_config with defaults arg
Fix not removing file or cmdline settings in persistent groups
Fix a bug in get_namespace when config is a namespace
Add additional tests
Calling add_group or add_persistent_group twice will add any new
settings defined.
Raise a ValueError if add_group or add_persistent_group is called during
a call to add_group or add_persistent_group.
Persistent setting groups allow settings that are not declared to
survive normalization and other operations that would normally remove
any unknown keys in a group.
Calling normalize or get_namespace with persistent=False will remove
unknown keys even from persistent groups.
Currently the only way to retrieve the defaults for a config and
preserve unknown keys is to manually get the defaults and update each
existing group with the default values.
Used Generic for better typing
Backported BooleanOptionalAction for tests on Python 3.8
Remove merge support in normalize_config
Add test to validate that the example works