MessageDispatcher: added support for multiple recipients.

I've added support for multiple recipients while keeping both backward compatibility and unchanged performance in case of single recipient.

  * Agents can register themselves to message codes they are interested in. This means that MessageDispatcher has an `IntMap<Array<Agent>>` where the key is the message code and the value an array of agents.  
  * If the telegram is for a specific agent he doesn't have to be registered and the telegram will be dispatched only to him (just like before)
  * If the telegram has no explicit recipient, i.e. `telegram.receiver == null`, it will be dispatched to all the agents registered for that message code. 

Now I'm at a crossroads. Telegrams are created and pooled by MessageDispatcher, also a telegram might have an extraInfo object containing message-specific information. The exraInfo object might be pooled by the application, why not? In case it's pooled, how can we let the app know that the telegram has been dispatched to all the receivers and that it can be returned to the pool? 
- **Option 1**:
   * The Agent interface has a new method `notifySender(Telegram)` that will be called by the MessageDispatcher after dispatching the telegram to the recipients and before returning the telegram to the pool. This gives the sender the opportunity to free the `telegram.extraInfo` object in case is pooled.
  * Additionally the sender might explicitly request the notification through an optional boolean parameter passed to the `MessageDispatcher.dispatchMessage()` method that creates the telegram. Of course this means that the telegram will have a new boolean field.

- **Option 2**:
After dispatching the telegram to the recipients and before returning the telegram to the pool, the  MessageDispatcher first checks if `telegram.extraInfo instanceof Pooled` then calls the free method of the Pooled interface.

Option 2 is more specific and backward compatible while option 1 is more general (can be used - and abused - for all kind of stuff) but breaks compatibility.
Also, with option 1 it is responsibility of the sender to perform the right action based on the message code and the extraInfo object, since the sender can send telegrams carrying different types of message.

I'd like to know your opinion and of course any "option 3" is welcome :)