Implement monohybrid crossing

This program is at a very messy state. A lot of the code will likely be
refactored soon. A .gitignore file was also added to prevent builds
from being committed.