While building CMake on EDG 603+-based compiler, such as LCC 1.27.x,
an internal assertion failure may be experienced with a message like
'assertion failed at: "il.c", line 15635 in i_copy_dynamic_init'.
This commit introduces a workaround that helps avoiding this.
Workaround is enabled only for LCC based on this EDG frontend,
it is not known if it is needed for any other compilers, since
there were none found based on EDG 603 and later and having this bug.
Some clients have been explicitly checking whether the string specified
after a keyword is empty. Offer them a way to specify that the string
must be non-empty as part of the binding type.
Bindings to `std::string` require one value. Some clients have been
filtering `keywordsMissingValue` to support keywords that tolerate a
missing value. Offer them a type-safe way to achieve this instead.
Previously bindings to `std::vector<std::string>` required at least one
value. Some clients have been filtering `keywordsMissingValue` to
support keywords followed by empty lists. Instead, require clients to
specify whether a keyword's list can be empty as part of the binding
type.