Add unit tests for Dispatcher.
Test that if a message is scheduled for resending, a further handleError() call will be a no-op.
Simplify a guard clause in handleError().
Move the Client unit tests over to mocking the Dispatcher API rather than the Transport API.
Provide a return value from WebSocket#request so that the socket can be closed on message timeout.
Add the 'attempts' and 'deadline' options for controlling message redelivery.
Extra debugging
Merge branch 'dispatcher' into gitter-dispatcher

Conflicts:
	javascript/protocol/client.js
	javascript/protocol/dispatcher.js