ClippableElement: Allow clipping with top or left edge
ClippableElement: Allow clipping with top or left edge

Previously, ClippableElement always assumed that the clippable would
be absolutely positioned using the 'top' and 'left' properties, and
therefore changing its 'width'/'height' would clip it from the bottom
or right edge. (In a special case, if the clippable extended past the
left edge of viewport, it was assumed to be positioned using 'right'
instead. This mostly but not quite avoided issues in RTL.)

This is of course not always the case, and the assumption would
occasionally cause either a lack of clipping or apparent
"double-clipping" (when we changed 'width'/'height' and it also
resulted in a change of position).

You can now override ClippableElement#getHorizontalAnchorEdge
and #getVerticalAnchorEdge. The default implementation handles the
positioning generated by FloatableElement.

Additionally, ClippableElement was fixed to account for scrollbar
gutter size, like FloatableElement.

Note that this does not fix T180173 (left/right edge clipping of
PopupWidget).

Bug: T178892
Change-Id: I0d1846e4a68b3c7ea70aa7ad96ae99b91ac3234d

wikimedia/oojs-ui,wikimedia/oojs-ui,wikimedia/oojs-ui,wikimedia/oojs-ui