common: added support for externally pumped mainloops (superloops).
Murphy mainloop has now an abstraction - called a superloop - for
external mainloops that pump the murphy mainloop. This abstraction
layer defines the set of functions one needs to implement to integrate
the native murphy mainloop to an external mainloop. Practically this
means implementing functios for
- adding/deleting file descriptor I/O watches,
- adding/deleting/modifying timers, and
- adding/deleting/enabling/disabling deferred callbacks
To integrate murphy to any external mainloop one needs to
- implement these functions using the external mainloop, and
- register these functions as the superloops API to murphy
(using mrp_set_superloop)
After this whenever the superloop is iterated/run, the murphy mainloop
will be iterated/run as well.