Persistence changes

IMPORTANT: Change is not backwards compatible with blocks that use groupby -- need to update all blocks

This is an issue with how mixins + persistence is implemented. Instead of the upper level block handling the persistence for mixin attributes, the Mixin should have it's own _load and _store methods that the upper level block has to call (if they exist).

Probably a better option would be for the self.persistence have a list called `methods`where every Block / Mixin can add their own load/store methods. This way you could write code like this:

```
def __init__(self, ...):
  def load(self):
    self.value = self.persistence.load("value") or 0
  def store(self):
    self.persistence.store("value", self.value)
  self.persistence.methods.append((load, store))
```

Then no block that inherrits mixins has to worry about this.