Factor out GamepadCommon base class from Gamepad and WebKitGamepad

WebKitGamepad is a legacy interface for Gamepad, and hence there's a lot of duplicated code.
This reduces the duplication by C++ inheritance from a base class.

(Also cleanup for consistency and brevity.)

There isn't much code duplication for WebKitGamepadList/GamepadList,
so no benefit for a base class there, but tweaks.

Notes:
* Use C++ inheritance only; IDL files are unchanged
(*implementation* is inherited, *interface* is not)

* Inherit from an abstract GamepadCommon class
(needed for ScriptWrappable::init in constructor, avoids duplicate members and virtual methods)

Followup to:
Added non-prefixed navigator.getGamepads() with updated API
https://codereview.chromium.org/183313003/

BUG=344556

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

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