Reimplement Document's asynchronous delayed load events with EventSender.

This addresses nondeterminism that leads up to a 'readystatechange' DOM event.
Web Inspector: fix regression related to updating the resource sidebar placeholder text.
Web Replay: HTMLLinkElement and HTMLStyleElement should not use dispatchAsyncEvent().

This is unnecessary because event dispatching is mediated through EventSender.
Minor changes to the EventSender API.

Make the EventSender API more verbose; expose hasPendingEventsForSender() for
debug and release builds (as a replacement for uses of Timer::isActive()).
Capture DOMTimer firings within InstrumentedDOMTimer::fired.

Previously, inputs for DOMTimer firings were created by ReplayController using
inspector instrumentation for willFireTimer. This dependency is unnecessary.
Web Replay: mediate DocumentEventQueue nondeterminism with EventSender.

Instead of using a suspendable timer, DocumentEventQueue itself implements the
ActiveDOMObject interface, and defers scheduling to EventSender. This allows
us to not forcibly flush the event queue on every EventLoopInput dispatch,
improving performance.

Closes #384.
Web Replay: ensure that DOM events are prefixed by an event loop input.

Closes #385.

A DOM event should always be causally related to an event loop input that was
captured or is being replayed. If it is not, then the DOM event could have been
dispatched nondeterministically, as we did not account for it's causal source.

In practice, this invariant boils down to whether a DOM event is dispatched while
an input is being captured or replayed earlier in the call stack.

This patch adds a simple assertion for this invariant during replay. To assert
the invariant during capturing, we model the effective 'extent' of a captured
event loop input by using the EventLoopInputExtent RAII helper class.