Added more types of coexistence

Updated CoexistencePenalty to be more fine-grained.
Removed CoexistenceChecker as it needs to be thought through more.
Add some more unit tests