Loops: stop data calculation when append is False

PythonLoopStop(): customize is_ready(): return True if append is False
  This means run() will be called, which will call run() on
  PythonLoopStart(), which will invalidate the chain after list_item

PythonLoopStart(): invalidate the chain after list_item before trying
  to get the next item.
  This means that list_item will be invalid if get_next_item() reaches
  END OF LIST.

PythonLoopStart(): customize is_done(): return True after END OF LIST
  If we don't do this, the element will stay a candidate element to be
  executed. We could also return False in is_ready(), but returning
  True in is_done() seems more logical.
refactor PythonLoopStart/Stop to LoopStart/Stop

also move from python_loop.py to control_flow.py
refactor: PythonLoop() is now a function instead of a fake Class

Also, due to this change, I can return start & stop from this function,
so I don't need the __iter__()-workaround in ElementGroup anymore to be
able to do start,stop = PythonLoop().
rename PythonLoop() to create_loop()