Add PongEvent

When used with Celluloid the block created with
```ruby
driver.ping 'my message' do
  @latency = now - start
end
```

never gets executed, now you can subscribe to
```ruby
driver.on(:pong) do |pong|
  if message = @pong_messages.delete(pong.message)
    @latency = now - message[:start]
  end
end
```
No, `callback = @ping_callbacks[message]` retrieves a callback from the hash and assigns it to `callback`, and `@ping_callbacks.delete(message)` removes the callback from the hash. `callback` still refers to the callback. This could actually be reduced to `callback = @ping_callbacks.delete(message)`.