Group aggregate #1546

@taldcroft please have a look at the changes. Also here is a comparison of np.sum and np.add.reduceat.
![comparison](https://cloud.githubusercontent.com/assets/5782112/3280724/346b350a-f479-11e3-9f7f-d364b806d2b4.png)

If the column is masked, this will call the old method but with func = np.add. This will give an error, because np.add() wants two arrays as input.