WIP: Homescreen grouping

Working:
- Creating groups
- Adding/removing items from groups
- Group size limit
- Empty groups get removed
- Multiple groups
- Rearranging groups
- Expanding/collapsing groups
- Transitions
- Saving/restoring (including collapsed state)
WIP: Rework group proto to conform to preliminary spec

This is a bit broken, and there are usability/style issues to work out.

Plan:
Everything is in a group, so no need for group-start/group-end. Instead,
when grouping is enabled, replace the normal divider with a divider that
has grouping behaviour (using most of the code from group).

The major difference code-wise is that items are always in groups, so we
have to look ahead to the next divider to see when to skip rendering
collapsed items, and similarly, the group has to look behind it till the
next divider or the start of the items to see what items are inside it
(instead of ahead to the next group-end).