Start service discovery at application start
Pass context and discovery socket to MainApp

There's no reason to create multiple zmq contexts, so pass the first
context created to the application so that it can be used.
Make ServiceTracker actually track connections

Instead of only polling, let the ServiceTracker keep track of the
names of the services alive and handle the connecting and
disconnecting of them.
Patch zmq socket for versions below 3.2

Add a no-op disconnect method.  The method is used by ServiceTracker
when a service goes away.
Use the Avahi service discovery code in kaimu.py

Bound ports for the services are now random, but through Avahi kaimu
can now find the services with their ports and connects to them.