Use random UUID for module ID if none given
Improve Message dispatching

ConnectionManager now allows you to register MessageHandler for an
AppID/Message class pair instead of just an AppID. This is also used internally
in TCPConnectionManager.
Additionally an Executor can be specified that will be used to run the
MessageHandler