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.
Based on the previous comments, this would become :
```
for i, (pop, log) in zip(range(ngen), evolution):
```