Add section support to list widgets
The rough plan for this is:
- use a sorter to divide items into sections
- sorter returns 0 for same section, <0 for "in section ahead of and >0 for "in section behind"
- allows keybindings for section-up/down (a11y?)
- use the first item in each section as 'header item'
- make listbase use a tracker for header items
- add a 'header factory' that can create section headers
- to use this machinery with grids, we need to introduce breaks in the grid