To get the old behavior, you now need to refer to the internal keywords
(like "bird_medium" or "quadruped_small") rather than the old friendly
names (like "duck" or "pig"), as the latter generate single species now.
Is also able to refactor some of the uglier code and introduces a
framework that (suitably extended) could be useful in removing
boilerplate elsewhere.