Abstract away communication into interface

* Create generic interface ufo_messenger_iface
* Move all zmq_* stuff into ufo_zmq_messenger that implements that
  interface
* also fixes a bug that happened when closing the zmq_socket from
  another thread by introducing a special TERMINATE message that
  will kill ufo-daemon