config refactoring: fix hierarchy of configuration variable flags
From legacy/trac#31494 (moved), previously from comments on legacy/trac#30935 (moved):
- Convert the "contained" flag to something more like "NOCOPY NOCHECK NODUMP".
- at the higher level, split "contained" into "derived" and "obsolete". At the lower level, give both "derived" and "obsolete" the flags "NOCOPY NOCHECK NODUMP".
- even though these concepts may have the same flags right now, we don't want to lock them in to having the same flags in future. Because they are separate concepts that are quite different. For example, "derived" has a (derived) value, but "obsolete" has no value.
- Make the "invisible" flag more like "NODUMP NOREAD".
- Make sure that all low-level flags are orthogonal.
- Make sure that "invisible" vs "hidden" is more clear.