Factory

Massive pull request with a touch of refactoring.
TO DO: (commented so far, so that the code can run):
- refactor matingEvent.cpp and migrationEvent.cpp to use behaviors
- update the UML relationship diagram
- define Being::isWillingToMateWith in Being.cpp (already declared in Being.h)