Reland: Split implementation of EventListener and EventHandler

This reverts commit 9f87a1ee823c8bf185dfdde265e457c2cc668191.
https://chromium-review.googlesource.com/c/chromium/src/+/1212202

Regarding to crbug.com/881688 :
This CL adds the check for if listener is empty or not before calling
it, but it should not be empty at that time. This is because listener
object could be collected prematurally by garbage collection.
This will be fixed after unified GC is launched, or wrapper-tracing is
applied appropriately to all the EventTarget (some of EventTargets need
to be ActiveScriptWrappable).

Bug: 872138, 881688, 878658, 606900, 849236
Change-Id: I9b224e0d261e1567c4c4f7778bd0d6044b7f6202
Reviewed-on: https://chromium-review.googlesource.com/1212376
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Hayato Ito <hayato@chromium.org>
Reviewed-by: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Commit-Queue: Yuki Yamada <yukiy@google.com>
Cr-Commit-Position: refs/heads/master@{#589820}
34 files changed