added DatagramSocketEventEmitter abstract class, which UnicastEventEmitt...

...er and MulticastEventEmitter both extend

UnicastEventEmitter and MulticastEventEmitter contained a lot of duplicated code.  also, UnicastEventEmitter did not extend AbstractEventEmitter for some reason, so heartbeats were not possible.  this is an attempt to clean that up.