Implement a binding layer for oilpan and move Gamepad to oilpan

- The key of the binding layer change is as follows:

--- Add |isGarbageCollected| field to WrapperTypeInfo. This flag is used to distinguish if the object is in oilpan's heap or not.
--- For oilpan's objects, we add one extra internal field to a DOM wrapper and store a persistent handle to the oilpan object. This will increase the size of DOM wrappers by one word. For non-oilpan's objects, we don't add the extra internal field.

- As one example, this CL moves Gamepad and GamepadList to oilpan's heap, using transition types. (For this kind of simple hierarchy, we don't need to use transition types, but I'm intentionally using transition types in order to implement a binding layer that support transition types.)

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=166306

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=166360

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

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