Ebullient events
Adds a runNoLoop
function, allowing for looping to be controlled entirely by external events.
This is the way the platform "should have been" from the beginning, and in a new minor release we may dispense with the original run entirely. To do this, we'd have to test than an external looping mechanism as as efficient and as ergonomic as an internal one.