REF: remove _get_grouper, make Grouper.__init__ less stateful
Having a BaseGrouper._get_grouper, BinGrouper._get_grouper, and Grouper._get_grouper that all do different things is making my eye twitch.

L509-513 the case where `isinstance(newgrouper, ops.BaseGrouper)` looks like things might go wrong if we ever get there with `len(newgrouper.groupings) > 1`, but we have no tests that get there and this is too spaghettified for me to be sure.  cc @jreback
Thanks @jbrockmendel 