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.