API: Remove kwargs from GroupBy
Remove kwargs from ``_GroupBy`.__init__`` and adds an explicit ``mutated`` parameter name instead. Also makes related changes. 

Avoiding kwargs when possible is better for typing ergonomics.
generally +1.  im also unclear on the mutated thing.  I epxect we dont want users passing it directly, wondering if it can be kept out of the top-level method signature > wondering if it can be kept out of the top-level method signature.

It is already allowed in the top-level signature, it's just hidden, so it would have to go through a deprecation process. But else I agree. I am actually -1 on this change; unfortunate that we accept kwargs here but mutated is entirely an internal construction. I don't think we should expose it out as part of the GroupBy API If mutated is internal, I think it should not be in the ``NDFrame.groupby`` signature, becuase that is a public signature. It should just call ``pandas.core.groupby.groupby.groupby`` directly, bypassing NDFrame.groupby. I've made a few changes:

* the ``mutated`` parameter in NDFrame.groupby has been formally deprecated.
* I've renamed ``grouper.groupby.groupby`` to ``grouper.grouper.get_groupby`` to better signal it's a function
* I've typed out the parameters of ``get_groupby`` to make its signature explicit.

It didn't seem that any internal functionality actually used ``mutated``. At least no tests that don't explicitly use ``mutated`` failed.
 why would you deprecate? it is not public  > It didn't seem that any internal functionality actually used mutated. At least no tests that don't explicitly use mutated failed.

If this is correct, we could also directly remove it? (it has never been publicly exposed, only hidden in the kwargs, so I don't think a user could ever have known to pass a `mutated` keyword?) 

 Ok, I've removed ``mutated`` from ``NDFrame.groupby``. thanks @topper-123 nice clean