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.


shouldn't this go into `try {}` after `JSON.parse`? or, alternatively, `return` on exception.