Added random mate selection, random gamete selection, and infinite site mutation model; added idea of random process which provides all derived classes with an instance of a random number generator. It assumes the same RNG will be used for all instances of RandomProcesses (ie. RandomProcess provides static RNG )
Extended the capability of the mutate_site (refactor of infinite_site) reproduction model. It now considers inifinite or fixed site mutation models. fixed site assumes that the variant map with which it is associated contains an instance of every variant which is of interest.  Performed basic testing with two different approaches to gamete design. The first is a dynamic list of pointers to variants. Different alleles of the same variant are not directly considered, but can be achieved by simply defining each allele as a new variant. The second approach treats gametes as indexed lists of alleles of fixed size. The primary disadvantage of the second approach does not maintain quick indexing for mutated variants. As a result many algorithms are forced to iterate over the entire list of which most variants are unmutated (at least in the early generations). This is a significant performance hit. In a simple sim that tracks variant penetrance, the later approach was roughly an order of magnitude slower