Make the receive method in Messenger a generator.

This allows for easier and more intuitive use and avoids the
unnecessary while True loop.
Add a start method to Messenger that must be called before using it.

This seperates the setting up of attributes for an instance of a
messenger from starting threads and setting up sockets etc.
Split the Messenger into abstract Messenger and concrete UDPMessenger.

This allows for for a base set of functionality defined for every
messenger that can be extended by other concrete messengers.
Add and start using the ZMQ messenger.
Use 0 for port if -p 0 is used.
Switch to ZMQ FLP protocol.
Fix handling of create_job PINGs and change receive timeout.
Add the ability to start and stop multiple slaves on the same machine.

These scripts might be extended in the future to start/stop slaves on
multiple machines.
Bind to all local interfaces but use the public interface as identity.
Update .gitignore.