Support MDES-versioned code lists (#3616)

This series of commits addresses [Cases-3616][] by:

* Making `NcsNavigator::Core::Mdes::Version` comparable
* Defining and implementing a mechanism for associating the same model attribute with different code lists in different MDES versions
* Using this mechanism for the operational code lists that changed between MDES 2.0 and 2.1
* Making `NcsCode.attribute_lookup` MDES-version-aware. This is handled by making it dynamic, based on `ncs_coded_attribute` declarations, rather than static. This in turn also enables detecting (by the software) and correcting (by the developer) ambiguities arising out of the same attribute being used with different code lists in different models.

The ambiguities in the NIR/NIP part of the consent process are corrected in this branch. There are other ambiguities in the sample/specimen collection area which are not corrected because they have deeper causes (see [Cases-3764][]).

[Cases-3743][] came up while working on this issue (and [Cases-3633][]) and will be handled separately.

[Cases-3616]: https://code.bioinformatics.northwestern.edu/issues/issues/show/3616
[Cases-3633]: https://code.bioinformatics.northwestern.edu/issues/issues/show/3633
[Cases-3743]: https://code.bioinformatics.northwestern.edu/issues/issues/show/3743
[Cases-3764]: https://code.bioinformatics.northwestern.edu/issues/issues/show/3764