Added an example of algorithm that uses a yield instead of a return.

These might be usefull if we want to do work outside of the loop, like
checkpointing or printing the log every other generation.
Or we could also use next:
```
for i in range(ngen):
    pop, log = next(evolution)
```