Store subscriptions in a SubscriptionRegister

Rename the Client class to WebSocketClient.
Add a pending integration test for responding to GitHub commit hooks

Also add various fixtures needed by the test.
Extract a RepoMapper module out of the Repo class
Alias #eql? to #== for Blob and Language so they can be Hash keys
Extract a CommitMapper out of the Commit class
Add a minimal WebHook server and an EventDispatcher class
Process incoming webhooks for push events and inform subscribed clients
Clients are unsubscribed from all repos after disconnecting
Add basic error handling to the EventDispatcher class
Add Responder objects and delete the now redundant Subscription class
Delete the EventDispatcher class, use an Event responder instead
Synchronise webhook test by waiting for events before triggering hook

This prevents the occasional "Request failed:" error messages from
showing up in STDOUT, as the webhook is only triggered once all other
HTTP requests have completed.
Remove #to_h methods from data objects, serialize in the responders
Add missing EM.next_tick when processing new subscriptions
Don't blow up when a push event commit has a null committer