IntersectionObserver: use an idle callback to send notifications.

Re-landing after original:

https://codereview.chromium.org/1780163002/

... was reverted by:

https://codereview.chromium.org/1776493002/

With this change, the tests can no longer use setTimeout(0) to wait
for notifications to be delivered.  Instead, use takeRecords() to
proactively grab notifications right after they are generated
(typically in a RAF right after a layout change).

These tests tickle a bug in ScriptedIdleTaskController, hence the
LeakExpectations entries.

BUG=540528
R=ojan@chromium.org,haraken@chromium.org,sigbjornf@opera.com

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

Cr-Commit-Position: refs/heads/master@{#385021}
22 files changed