Implementation of DatasetGroupBy summary methods

You can now do `ds.groupby('time.month').mean()` to apply the mean over all groups and variables in a dataset.

It is not optimized like the DataArray.groupby summary methods but it should work.

Thanks @jhamman for laying the groundwork for this!