Overlay the eventTrap outside and over the cursor.

This commit pulls the event trap outside the cursor,
and as a child of the canvas,
and makes the Caret track the cursor's position and
position the trap above the cursor.

This means that there is no need to manually
blur and focus the eventManager whenever an
operation is executed.
Add quirk `elementBCRIgnoresBodyScroll` and it's
workaround in DomUtils.getBoundingClientRect.

When the body has scrolled, an element/range's BCR
should update to reflect the new coordinates.

Instead, in iOS Safari, an element's BCR remains the
same that happens.

This workaround attempts to trigger a quick bodyscroll
and detects this quirk by measuring the BCRs of a
test element before and after.