Implement touch events and various other protocols (orientation, logging, equals, and active element)

This starts my implementation of the html5 protocols with touch events.

EventFiring classes also updated to take into account new mouse and keyboard interactions.

I have a branch for geolocation but a bug in the current (2.35) selenium server prevents this from working but has been fixed in the master https://github.com/SeleniumHQ/selenium/commit/834c31a6777c44d6eb801b0320aae22add1fc637. Will wait for that to be released before pull-requesting.