Multiple aggregation on Groupby with DatetimeIndex and Categorical column or chained Groupby and Resample with multiple aggregation functions
Given a categorical column and a `datetime` index, one can groupby and aggregate on either column, but one cannot groupby and aggregate on both.

Setup
-----
```python
import pandas as pd
joint = pd.DataFrame({"a": [0, 1, 2, 3, 0, 1, 2], 
                                        "cat": pd.Categorical(["a", "b", "c", "c", "b", "a", "a"])},
                                       index=pd.date_range("2020-01-01", freq="7h", periods=7)
                                     )
```

Case (A): `Groupby` and aggregate on `categorical` works
----------
```python
joint.groupby("cat").mean()

       a
cat     
a    1.0
b    0.5
c    2.5
```


Case (B): `Groupby` and aggregate on `DatetimeIndex` works
-----
```python
joint.groupby(pd.Grouper(freq="20h")).mean()

                            a
2020-01-01 00:00:00  1.000000
2020-01-01 20:00:00  1.333333
2020-01-02 16:00:00  2.000000
```

## Problem description

`Groupby` and aggregate on both fails
-------
```python
joint.groupby(["cat", pd.Grouper(freq="20h")]).mean()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-81-f936a2ab3c64> in <module>
----> 1 joint.groupby(["cat", pd.Grouper(freq="20h")]).mean()

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/groupby/groupby.py in mean(self, *args, **kwargs)
   1230         nv.validate_groupby_func("mean", args, kwargs, ["numeric_only"])
   1231         return self._cython_agg_general(
-> 1232             "mean", alt=lambda x, axis: Series(x).mean(**kwargs), **kwargs
   1233         )
   1234 

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/groupby/generic.py in _cython_agg_general(self, how, alt, numeric_only, min_count)
   1004             how, alt=alt, numeric_only=numeric_only, min_count=min_count
   1005         )
-> 1006         return self._wrap_agged_blocks(agg_blocks, items=agg_items)
   1007 
   1008     def _cython_agg_blocks(

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/groupby/generic.py in _wrap_agged_blocks(self, blocks, items)
   1753             result = result.T
   1754 
-> 1755         return self._reindex_output(result)._convert(datetime=True)
   1756 
   1757     def _iterate_column_groupbys(self):

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/groupby/groupby.py in _reindex_output(self, output, fill_value)
   2488         levels_list = [ping.group_index for ping in groupings]
   2489         index, _ = MultiIndex.from_product(
-> 2490             levels_list, names=self.grouper.names
   2491         ).sortlevel()
   2492 

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/indexes/multi.py in from_product(cls, iterables, sortorder, names)
    551 
    552         codes = cartesian_product(codes)
--> 553         return MultiIndex(levels, codes, sortorder=sortorder, names=names)
    554 
    555     @classmethod

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/indexes/multi.py in __new__(cls, levels, codes, sortorder, names, dtype, copy, name, verify_integrity, _set_identity)
    278 
    279         if verify_integrity:
--> 280             new_codes = result._verify_integrity()
    281             result._codes = new_codes
    282 

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/indexes/multi.py in _verify_integrity(self, codes, levels)
    366 
    367         codes = [
--> 368             self._validate_codes(level, code) for level, code in zip(levels, codes)
    369         ]
    370         new_codes = FrozenList(codes)

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/indexes/multi.py in <listcomp>(.0)
    366 
    367         codes = [
--> 368             self._validate_codes(level, code) for level, code in zip(levels, codes)
    369         ]
    370         new_codes = FrozenList(codes)

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/indexes/multi.py in _validate_codes(self, level, code)
    302         to a level with missing values (NaN, NaT, None).
    303         """
--> 304         null_mask = isna(level)
    305         if np.any(null_mask):
    306             code = np.where(null_mask[code], -1, code)

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/dtypes/missing.py in isna(obj)
    124     Name: 1, dtype: bool
    125     """
--> 126     return _isna(obj)
    127 
    128 

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/dtypes/missing.py in _isna_old(obj)
    181         return False
    182     elif isinstance(obj, (ABCSeries, np.ndarray, ABCIndexClass, ABCExtensionArray)):
--> 183         return _isna_ndarraylike_old(obj)
    184     elif isinstance(obj, ABCGeneric):
    185         return obj._constructor(obj._data.isna(func=_isna_old))

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/dtypes/missing.py in _isna_ndarraylike_old(obj)
    281         else:
    282             result = np.empty(shape, dtype=bool)
--> 283             vec = libmissing.isnaobj_old(values.ravel())
    284             result[:] = vec.reshape(shape)
    285 

TypeError: Argument 'arr' has incorrect type (expected numpy.ndarray, got Categorical)
```


Chaining groupby and resample works for a single aggregation functions
-----
```python
joint.groupby("cat").resample("20h").mean()
                         a
cat                       
a   2020-01-01 00:00:00  0
    2020-01-01 20:00:00  1
    2020-01-02 16:00:00  2
b   2020-01-01 00:00:00  1
    2020-01-01 20:00:00  0
c   2020-01-01 00:00:00  2
    2020-01-01 20:00:00  3
```

But fails with a `RecursionError` for multiple functions using `.agg`
-----
```python
joint.groupby("cat").resample("20h").agg(["mean", "std"])
---------------------------------------------------------------------------
RecursionError                            Traceback (most recent call last)
<ipython-input-123-82216bdd4daa> in <module>
----> 1 joint.groupby("cat").resample("20h").agg(["mean", "std"])

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/resample.py in aggregate(self, func, *args, **kwargs)
    279 
    280         self._set_binner()
--> 281         result, how = self._aggregate(func, *args, **kwargs)
    282         if result is None:
    283             how = func

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/base.py in _aggregate(self, arg, *args, **kwargs)
    484         elif is_list_like(arg):
    485             # we require a list, but not an 'str'
--> 486             return self._aggregate_multiple_funcs(arg, _axis=_axis), None
    487         else:
    488             result = None

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/base.py in _aggregate_multiple_funcs(self, arg, _axis)
    530                 colg = self._gotitem(col, ndim=1, subset=obj.iloc[:, index])
    531                 try:
--> 532                     new_res = colg.aggregate(arg)
    533                 except (TypeError, DataError):
    534                     pass

... last 3 frames repeated, from the frame below ...

~/.conda/envs/test_env/lib/python3.7/site-packages/pandas/core/resample.py in aggregate(self, func, *args, **kwargs)
    279 
    280         self._set_binner()
--> 281         result, how = self._aggregate(func, *args, **kwargs)
    282         if result is None:
    283             how = func

RecursionError: maximum recursion depth exceeded while calling a Python object
```

even though the output should still be
```python
                         a
cat                       
a   2020-01-01 00:00:00  0
    2020-01-01 20:00:00  1
    2020-01-02 16:00:00  2
b   2020-01-01 00:00:00  1
    2020-01-01 20:00:00  0
c   2020-01-01 00:00:00  2
    2020-01-01 20:00:00  3
```


<details>

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.7.6.final.0
python-bits      : 64
OS               : Linux
OS-release       : 3.10.0-1062.4.3.el7.x86_64
machine          : x86_64
processor        : x86_64
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 1.0.1
numpy            : 1.18.1
pytz             : 2019.3
dateutil         : 2.8.1
pip              : 20.0.2
setuptools       : 45.2.0.post20200210
Cython           : None
pytest           : 5.3.5
hypothesis       : 5.5.4
sphinx           : 2.4.0
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : 4.5.0
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 2.11.1
IPython          : 7.12.0
pandas_datareader: None
bs4              : 4.8.2
bottleneck       : 1.3.1
fastparquet      : None
gcsfs            : None
lxml.etree       : 4.5.0
matplotlib       : 3.1.3
numexpr          : 2.7.1
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : None
pytables         : None
pytest           : 5.3.5
pyxlsb           : None
s3fs             : None
scipy            : 1.4.1
sqlalchemy       : 1.3.13
tables           : 3.6.1
tabulate         : None
xarray           : None
xlrd             : None
xlwt             : None
xlsxwriter       : None
numba            : None

</details>
