Remove NDFrameGroupBy Class
Was going to do a larger refactor but this diff looks more confusing than it actually is, so figured I'd stop here for readability. All I've done in this PR is:

  - Remove NDFrameGroupBy, consolidating it's methods into DataFrameGroupBy
  - Merge NDFrameGroupBy.aggregate into DataFrameGroupBy.aggregate (the latter previously called the former)

After this I am looking to find a more logical home for the functions, as the current hierarchy isn't super clear. For example, `_iterate_slices()` should probably be abstract in the base `GroupBy` class, but right now the Series implementation is in the superclass while DataFrameGroupBy overrides that for itself. Series.pct_change is practically the same as GroupBy.pct_change, so is probably unnecessary. Will be a few more follow ups mixed in
Hello @WillAyd! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:





There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2019-10-08 06:05:46 UTC Yep...like I said I think the way git is calculating the diff on this makes it seem a lot bigger than it is. Mostly just a cut and paste of the entire class def

Sent from my iPhone

> On Oct 8, 2019, at 3:18 AM, Jeff Reback <notifications@github.com> wrote:
> 
> ﻿
> @jreback requested changes on this pull request.
> 
> you know how we love large PRs!
> 
> but will look
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.
 > Mostly just a cut and paste of the entire class def

where is this NOT a cut-paste? can you comment on the code It might also be helpful to look at the commits besides the blackify one to see the only things that aren’t direct copy paste. 

The initial commit is the entire cut and paste, just difficult to see that by default with git thanks @WillAyd copy-pasting is ok here!

yeah this makes sense..