Switch `tick()` to generator `_tick()`

To preserve at most one event dispatch per call.
Rename `next_time_to_run` to `next_time_to_check`

Matches documentation.
Raise `RuntimeError` when `next_time_to_check` is <=0

Prevent someone from shooting themselves in the foot by forcing tick()
to be called repeatedly with no delay.