Setting timer fd as CLOEXEC and NONBLOCK

To provide tight event loop one has to process events as fast as
possible and blocking call would not only ruin it, but it would block
the whole event handling loop.
More robust error handling with close() and assertions

Timer file descriptor is closed if it event machine fails to add it.
Retry epoll_ctl() with EPOLL_CTL_MOD if adding fails

While reading The Net it was clear that epoll() implementation wasn't
without its bugs. Seems that calling epoll_ctl() with EPOLL_CTL_ADD may
fail with EINVAL in some cases when file descriptor was duplicated.
Workaround for some of them is to try EPOLL_CTL_MOD. Hope that there was
no confusion, but this patch can't harm. Yeah, famous last words.
Event machine API functions return uint32_t

Originally these functions defined their return types as enum EM_result.
This let compiler decide how the result will be stored, but normally
user wants to know how these values are stored and so this patch
provides that.
Checking main event loop invariants
Correcting behaviour of event descriptor removal

Originally removing event descriptor from storage wasn't performed if
user supplied NULL. This, however, is not desired behaviour. It has to
be removed always when removing is supported.
Updated documentation comments
Presents oneshot timer implementation.

Oneshot timer is started when kernel call timerfd_settime gets itimerspec
structure with interval set to zero.. And so oneshot timer is distinguished by
one flag passed to event_timer_start which set itimerspec structure properly.