Support math with GroupBy objects

You can now calculate anomalies with something like:
```python
grouped = ds.groupby('time.month')
anom = grouped - grouped.mean('time')
```

Still needs documentation (that will go in my current major refactor of the docs for v0.3).