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)
Unfotunately, render isn't a state in this case - for collapsed items at this point, render hasn't been called and render needs to be called - but we don't want to call render twice. The element may or may not be created, it isn't created on startup and there are other situations where it gets deleted as well I think. I could make this an if/else and duplicate the classList.add part if you'd prefer? Otherwise we need the boolean (unless I'm missing something obvious)