Switch to a non-inline Event Trap

This PR moves the `eventTrap` outside of the cursor node and makes it a child of the `canvas` element.
The positioning of it is managed by the `Caret`.

It being non-inline, we no longer need to save and restore focus when an operation batch's processing starts and ends, respectively. This means that the event trap does not frequently blur after text input or cursor movement, therefore enabling sustained typing on an opened iOS software keyboard. 
In addition, it comes with a bunch of performance benefits in text insertion/removal and cursor movements.

Correction for bodyscroll-damage to `getBoundingClientRect` is now performed in case of the `Caret`, the `eventTrap`, and the `SvgSelectionView`.