FloatableElement, PopupWidget: Do positioning from the right in RTL
We were always doing positioning from the left, even in RTL. While this
made the math a bit easier in some places, it meant that some features
never worked and were impossible to make work, such as aligning a
PopupButtonWidget's popup with the button's icon in RTL.
- Use right: Npx; instead of left: Npx; for positioning in RTL
- Ensure position: absolute; is set, we were relying on classes mixing this in to set it themselves
- Use right: 0; instead of left: 0; to position inline (non-overlay) popups in RTL. This aligns the right edges (correct) rather than the left edges (wrong) of the popup and the reference element.
- Use margin-right instead of margin-left to shift the popup relative to its anchor in RTL.
- Updating the computations for this was relatively easy: implement force-left/force-right in terms of backwards/forwards instead of the other way around, and multiply overlap adjustments by -1.
- Use margin-right instead of margin-left to align the popup with the icon in RTL.