REF: make _aggregate_series_pure_python extraction behave like the cython version
After some investigation it turns out that the DTA casting in `_try_cast` is made necessary because we incorrectly pass datetime64tz to `_aggregate_series_fast`, which calls the cython `libreduction.SeriesGrouper`, which casts the input to `ndarray`, losing the timezone.  By not going through the cython path for datetime64tz, we avoid the need to re-cast.

That in turn surfaces a new problem, which is that _aggregate_series_pure_python checks the first group's result slightly differently than the cython version does (see libreduction._extract_result).  This changes the way the pure-python version does it to more closely match the cython version. I intend to make these match more precisely in an upcoming pass.

If merged, makes #29589 unnecessary.

cc @jreback @jorisvandenbossche @WillAyd 
Hello @jbrockmendel! 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-11-17 16:02:37 UTC Thanks for the explanation! 
What is the impact on performance of not using the cython path for datetimetz ? 

Can you add the examples I gave in the other PR as test cases?
 > Can you add the examples I gave in the other PR as test cases?

Good idea, will do.

>  What is the impact on performance of not using the cython path for datetimetz ?

No idea. thanks.

are these incorrect on 0.25.3? if so, need a release note, pls add in a followup. > are these incorrect on 0.25.3? if so, need a release note, pls add in a followup

will do > > What is the impact on performance of not using the cython path for datetimetz ?
>
> No idea.

Could you then check it?