Flexible message handling at remote protocol layer.

Separate handling, routing and implementation of remote commands at the protocol layer. 

```ProtocolHandler``` receives a message and delegates handling to ```MessageBroker``` who dispatches it to handlers that are subscribed to a particular ```method``` (property that comes in the body of the message to keep existing convention). Additionally a ```send``` method was included to allow handlers sending messages to the Editor side without having to invoke transport directly.

Existing ```Runtime.evaluate``` handler has been moved to a separated object which now subscribes to messages of that type.


you only need to invoke handlers from `handlers`, not from `this.handlers` (the latter is a broadcast).