refactoring of TypeDetector class
-rename Entity::ID to Entity::types
-change enumerator to named enumerator, to force type check on constructor
-disable default constructor, use custom constructor instead, locking in the entity type
-adapt APIs accordingly
-rename get_num_types() into a more meaningful check_types() and check, both entity types and atom types for valid type ranges