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 have a doubt, is the JS engine resolving this.items.length every time for each iteration or just once? Just in case we can do 
```js
var length = this.items.length;
for (var i = 0; i < length; i++) {
```