Refactor|Optimize|UI|Client: Background text wrapping; avoid redundant updates

Improvements to TextDrawable and GLTextComposer. The former will now
preprocess upcoming text in the background without forgetting the
previous content that remains ready for drawing. The latter had a
bug where empty lines caused continual geometry updates.

Todo: Fix / work around text appearing after widget becomes
visible -- initial layout changes in a somewhat ugly fashion. Maybe
do an extra TextDrawable update() right before drawing.