Reland: Store |detail| as a hidden value of custom event wrappers

The original CL was reverted because it broke google image search.
This CL stores |detail| as a hidden value when initCustomEvent() is called
instead of serializing it.

Original description:

We cannot hold strong references from Blink to V8. This means
that we shouldn't use ScriptValue in DOM impl objects.
To stop using ScriptValue in CustomEvent, store |detail|
as a hidden value of custom event wrappers and return it when
the getter of |detail| is called.

BUG=529941

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

Cr-Commit-Position: refs/heads/master@{#352490}
8 files changed