Position the arrow with a continuous inline offset that points at the
element's center, replacing the three fixed start/center/end CSS slots so
it stays accurate when the element and popover differ in size.
- Aim at the center of the element/popover overlap, and fall back to the
configured align only when the element spans the whole popover edge
- Flip the arrow to the perpendicular edge when the element scrolls clear
of the popover, so it keeps pointing at the element instead of a corner
- Move positioning into src/position.ts with pure, unit-tested helpers
- Default popover side is now bottom instead of left
- Drop the internal "over" value from the public Side type