feature request #2949
Simplify TaxonName classes
Currently we do have 7 TaxonNameBase related classes. However only ViralName really differs much from all other classes.
Having different classes instead of pure type information from a type enum such as in Reference creates a lot of overhead for programming, therefore we should unify at least all 5 NonViralName classes.
However, the largest overhead is created by the differentation of TaxonNameBase and NonViralName as TNB is referenced e.g. by TaxonBase whereas for most operations on names we need NVN. This is also a recurring source of bugs such as Class Cast Exceptions.
As ViralNames are very rarely used, it is suggested to integrate them also within 1 (!) TaxonName class and treat incorrect handling via validation.
Also changing name types without changing uuid/id is easier this way.
Allow interfaces for correct programming such as for Reference interfaces.
NomenclaturalCode may become the type class and be persisted (see also #2615)