BUG: GroupBy.apply() throws erroneous ValueError with duplicate axes
- [x] closes #16646 
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

*Behavioural Change*
`GroupBy.apply` would sometimes throw an erroneous `ValueError: cannot reindex from duplicate axis` because when it checked if the output was mutated from its original shape it would only check the index, when sometimes it should check the columns. 

*Tests*
One new test added on `test_apply.py` which fails on master because of the bug; passes with this PR. One existing test was marked *xfail* but the *xfail* is now removed. One existing test previously had to manipulate the expected index, but that is no longer necessary. 

All of the copy-pasteable examples from #16646 are fixed with this PR. 
lgtm. pls merge master and ping on green. @jreback I think this is ready to merge.  thanks @smithto1 very nice