prevent unnecessary executions

tests.py
* test_change_flow_structure_between_two_calls_to_run() adapted to check
if all elements have been run the expected amount of times.

models.py
* keep track of the number of times an element has been executed
* check if an element is "done" before executing it