Implement custom event dispatching that walks the adjusted ancestor tree

This works by listening to the underlying event using capturing. When the event
occurs we gather the adjusted ancestors and manually dispatch along that path.

This does not yet handle stopPropagation nor stopImmediatePropagation.