Consistently give responsibility for thread sleeping to behaviours rather than controlling from the main action loop

This is to avoid excessive and inconsistent delays between behaviours that currently need to embed sleeps in other actions (e.g. physics) and other behaviours.
Might need a more sophisticated approach in the long term.