Make event sources destroyable; new Timer handler

Move struct callback out of postpone.h to the more secular header event.h.
It is not intuitive to include postpone.h into, say, timer.h for the
callback definition. event.h is just more comprehensive.

Make add_event_source() take a source_dtor() function associated with the
event source so that the fd and registered uptr can be professionally
destroyed by the system that provided them when remove_event_source() is
called. As another consequence we can get rid of the Timer list. All fds
will ever be kept in only one list: in event.c. Finally, even automatic
cleanup is implemented when Event exits.

The internal timer event handler is now the parent of all user timer
handlers. It consumes the rather useless 'fd' argument from Event and reads
the uin64_t from the timer fd which is now ignored as explained in the
commentary. It then calls the user handler. The work seems to justify the
overhead of an additional function call.

Tidy up TODO.

Introduce duplicate() memory.h which takes a pointer to some structure and
returns a malloc'd copy of it.