ui: Refactor font layout implementation

Move all layout state into Layout class along with addRect/growFreeSpace
ui: Implement Skyline rectangle packer

Skyline algorithm behaves much better when dealing with glyphs of random sizes.
The implementation needs a bit of cleanup but otherwise seems to work.