sl2: Add viewport and the concept of a main displayable.

Viewport was broken with sl2, so we now have a compatible
implementation.

Several screen language things are implemented as composite
displayables. For example, a textbutton consists of a Text
and a Button, and a viewport scrollbars "both" consists of
a Side, two Bars, and a Viewport.

The main displayable (stored in _main on the outer displayable) is the
displayable we add children to, and return for get_widget.