BUG: resample.agg with read-only data
- [x] closes #31710
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

thanks @jbrockmendel  Just a heads up I think this introduced some new build warnings. I've had a separate PR to clean those up and error going forward so can fall back to that if required, but if you have time to look in the interim would be appreciated as well

Here is what I see

```sh
pandas/_libs/groupby.c:37458:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:38233:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:39008:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:39781:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:40563:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:41999:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:42820:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:43641:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:44460:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:45288:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/hashtable.c:63216:20: warning: unused function '__pyx_memview_get_object' [-Wunused-function]
  static PyObject *__pyx_memview_get_object(const char *itemp) {
                   ^
pandas/_libs/hashtable.c:63221:12: warning: unused function '__pyx_memview_set_object' [-Wunused-function]
static int __pyx_memview_set_object(const char *itemp, PyObject *obj) {
           ^
pandas/_libs/groupby.c:55168:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:55970:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:56772:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:57568:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:58985:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:59784:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:60583:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:61376:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
``` @WillAyd where does this sit on the annoyance-problem scale?  i.e. is waiting for cython 0.30 a viable option?