Introduce Userevent API

User events are _not_ pipe-based (as one could have hoped from the TODO)
since this is just not necessary. Put it into crude words, using a pipe
is BS: data to the write end of the pipe will go through the kernel into
the _local_ read end and then read and dispatched by Event. Totally
pointless.

Calling send_event() currently employs the Postpone API to dispatch user
events at next event loop. This means that user events are also not directly
incorportated into ELSD, but indirectly, because they're postponed
functions. Eventually meaning that the engine won't shutdown as long as
there are pending user events.

Explain __init and __exit stages like runlevels in engine.h. Seriously,
those documentary texts ought to be under Documentation/ in the near future!