Extract Module
Multiple methods have been extracted into modules emulating a class hierarchy.
* disjoint_taxon_name_classes is in InnerClass module.
* applicable_ranks has been extracted into InnerClassFamilyGroup, InnerClassGenusGroup and InnerClassSpeciesGroup modules. All of them include InnerClass since disjoint_taxon_name_classes required the same behaviour in all the classes these modules extend.
* code_applicability_start_year and code_applicability_end_year have been extracted into InnerClassFamilyGroupUnavailableBefore2000 module for two related classes. This module includes InnerClassFamilyGroup as these two classes required the same behaviour for disjoint_taxon_name_classes and applicable_ranks.