Fix ELSD event counter bug

Commit fa2efa73 introduced a change in ELSD where nr_events was compared to
one instead of zero. This was anticipatory to the Userevent API but later
found useless.

However, it made the examples fail working with timers. Easy bisect training
BTW.
Change module signature; unload steady modules

The module signature changed from having exported game_{init,exit}() to
module_{init,exit}(). This breaks the ABI.

Allow steady modules to be unloaded at will (provided that the handle from
load_steady_module() is kept).

Don't complain if no module was given at command line. I introduced the
transcendent NULL-module for this case. It does nothing and thus if it is
not replaced by a module from the command line initially, it triggers ELSD.

This is less efficient than command line argument checking but makes it
easier to explain module insertion in a branch-free manner (because there is
now always a 'current' module we can unload before the new one is inserted).

Reinterpret the dlopen manpage: the reference count for a shared library is
incremented whenever dlopen() succeeds, not whenever the library is actually
loaded. So we don't use RTLD_NOLOAD in the assumption that we can open the
thing multiple times with this flag without incrementing the reference
count. This was verified to work but the former interpretation was never
verified to non-work...

For some _strange_ reason we have to unload the steady modules before we
finally go into the __exit chain of routines. Doing so in stop_engine()
makes the nasty memory leak from steady modules *finally* disappear! I would
appreciate to understand that. Is dlfcn using a higher destructor level?
Sometimes, the GCC sources are too cryptic... However, I am granted by the
GCC manual to use priorities 101+ and I wouldn't expect any harm from that.
I can, however, be a totally different issue; but what?