Consistent Naming Standard When Using Dict in GroupBy .agg
- [X] closes #21790
- [] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

This is a WIP as all of the tests in the groupby directory pass, but there are some outside of that which need touch ups. This is a relatively aggressive change so I figured I'd get buy in before going outside of that to modify tests.

This not only addresses the referenced issue but provides consistent expectations around columns returned when using a `dict` argument in a `DataFrameGroupBy`, namely that the returned object will have a `MultiIndex` where the top level is the column name and the subsequent level is the aggregation performed.

To play devil's advocate, this may be considered undesirable as it now returns a MultiIndex in *some* cases where that was flat before. However, I'd counter that this:

- Behavior is more consistent and easier to communicate
- Provides a return value whose column labeling is less ambiguous AND
- Simplifies the code base, providing us a clear path forward for whatever the renaming solution actually SHOULD be

Curious to hear other's feedback @jreback @TomAugspurger @jorisvandenbossche 
Hello @WillAyd! Thanks for submitting the PR.





 - In the file [`pandas/tests/groupby/aggregate/test_other.py`](https://github.com/pandas-dev/pandas/blob/ee7b72c787739fc75598ea4db5f2a317d29a8da1/pandas/tests/groupby/aggregate/test_other.py), following are the PEP8 issues :

> [Line 210:1](https://github.com/pandas-dev/pandas/blob/ee7b72c787739fc75598ea4db5f2a317d29a8da1/pandas/tests/groupby/aggregate/test_other.py#L210): [E302](https://duckduckgo.com/?q=pep8%20E302) expected 2 blank lines, found 1



 Closing as this should be part of larger discussion