Implement Component#layout instead of #columns, with three possible types.

'columns', 'rows', and 'horizontal'. 'horizontal' is the same as 'columns' but in its own separate table, unlinked from the parent layout.