The generation at which the  solution is found

The small code change in this pull requrest does **not change** the core functionality of the library. 

The following changes were made.
1. loopIO (Run.hs)
2. loopWithLog (Run.hs)
3. A new type to represent the **generation** was added in **Type.hs**

### loopIO
* After the stop condition is reached, the generation at which the stop condition was reached is returned.

### loopWithLog
* After the stop condtion is reached, the generation at which the stop condition was reached is returned along with the population and the value of the *writer* type.

### Generation type
* A new generation type was added to represent the generation of an arbitrary population.
* In this case the **Generation** is merely a type synonym for an **Int**