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)
I prefer forEachItem as I don't think we have a convention for including the word 'call' in functions that take callbacks, but I don't feel strongly about it - if you want the change I'll make it, let me know :) You're right with includeSelf, it doesn't make sense.