WIP: Homescreen grouping (v2)

Everything is in a group, dividers act as group separators.

Working (to a fashion):
- Rearranging groups
- Expanding/collapsing groups
- Creating new groups between groups
- Saving/restoring collapsed state
- Transitions

TODO:
- Editable group names
- General polish and optimisation (pending Gecko bugs)
This is only for the items in the group (which we don't track in a separate array) - looking at the forEach prototype, I don't see a way of adding bounds without splitting the array first... Which I guess I could do instead, but I'd have thought it'd be slower to make a new array and use native forEach for so few items vs. just iterating the part of the array we want.