Computing fitness is a stateful action.

The computation of the fitness from a given problem definition now results in
in a resulting pair of `Problem` and `Position`. This allows the `Problem` instance
to change as it is used. Such behavior facilitates dynamic environments much more
correctly as the environment might change at any time, especially from
fitness calculation to fitness calculation.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>