Gamepad API: add support for gamepadconnected and gamepaddisconnected events

Co-authored with Brandon Jones.

This CL continues the work of updating the Gamepad API to latest spec. NavigatorGamepad implements
WebGamepadListener which is the interface chromium will talk to when dispatching gamepad events.
The implementation follows the dispatcher-controller pattern used by device motion and device orientation.
There is some difference though because the gamepad data is polled instead of pushed by the platform.

BUG=344556

Review URL: https://codereview.chromium.org/200783002

git-svn-id: svn://svn.chromium.org/blink/trunk@169716 bbb929c8-8fbe-4397-9dbb-9b2b20218538