Ensure that a Gene cannot be created with an unnexpected type by
checking the GeneType. If the GeneType has an unnexpected value type
then throws an IllegalArgumentException from the constructor.
A few good comments.
Forgot Genes for rule operators.
Realized structure for a Linear Genome.