Add ElementRegistrationOptions

To follow the spec[1]. ElementRegistrationOptions replaces raw Dictionary.

This CL changes behavior when 'prototype' member of ElementRegistrationOptions
is 'specified but undefined', i.e., the second argument of registerElement()
is something like "{prototype: undefined}". Before this CL, Blink throws
a TypeError. With this CL, Blink treats 'prototype' as null and use
HTMLElement's prototype object to create custom element constructor.
This behavior matches what the spec requires because the default value of
'prototype' is null and when the member is undefined, its default value
should be used[3]. document-register-fuzz.js is updated to follow this change.

Tests under fast/dom/custom cover this change.

BUG=403150

[1] http://w3c.github.io/webcomponents/spec/custom/#api-element-registration-options
[2] http://w3c.github.io/webcomponents/spec/custom/#dfn-document-registerElement
[3] http://heycam.github.io/webidl/#es-dictionary

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

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