Event loop detects futility of its life

The event loop now checks if the engine could ever actually do anything. If
that is not the case, it calls stop_engine().

The situation is this: assume that there is no loop hook registered, no
event sources (currently we can precisely say: no timers) and no postponed
functions. The event loop would just poll on an empty set of fds (don't know
what epoll() does in this case, actually, there's nothing in the docs about
polling an empty set) to no avail.

Because there is no interaction with user code, there will never be
interaction - how could it come?

So that the three criteria above: a) no loop hook, b) no event sources and
c) no postponed functions can be evaluated to see if the engine should
continue run in the first place.