* think thoroughly about sigx++'s exception handling
* sigx doesn't work with lambdas yet (lambdas define lambda_type instead of adaptor_type)
* don't propagate exceptions across module boundaries!
  This means that throwing sigx::bad_caller or sigx::bad_dispatcher from within the sigx dll or shared module is a bad idea.
  possible solution: throw pointer to shared library's exception object, catch this pointer in a  inline wrapper method defined in the header.
  e.g.: tunnel_functor<T_functor>::operator() which calls tunnel_context::tunnel() which in turn might throw a sigx::bad_dispatcher exception should
  catch the pointer, copy the exception object pointed to to a local object, free the object pointed to and rethrow the local copy
* offer handling for system signals (e.g. SIG_HUP) such that they are propagated into the thread's mainloop
  (I imagine to attach Glib::Source to the Glib::MainContext)
* Documentation!: reference, tutorial, manual
