Do not automatically take list locks

The list_for_each*_safe() macros and List functions - both - now don't take
the list mutex anymore. It was a totally dumb idea to make individual
functions take the list lock. They don't know the context and have to *be*
protected by the programmer. This imposed problems such as the missing
ability to delete nodes in such a list_for_each* loop.

Where this behaviour is wanted, however, the new list_for_each_data*_lock()
perform the locking themselves.

The other list_for_each*safe() loop macros need a 'next' pointer again to
handle the removal of the current node.