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 turns out
to be different from the range's (correct) BCR,
because the element's does not take the body's scroll
into account.

This workaround attempts to trigger a quick bodyscroll
and detects this quirk by measuring the BCRs of a
test element vs it's range representation.
Introduce a 'composer' element in the cursor.

The composer reflects the text inside the eventTrap
and styles it with an underline to match other native
IMEs.
Make only EventManager handle eventTrap in the
DOM.
Restore the eventTrap and focus on undo.
Set pointer-events: none on the cursor,
so that the mouse pointer remains caret-shaped
when hovering over it.