add World.RunOnce to decouple running of a system

for example to decouple rendering out of the main game loop