[BLD] enable cython coverage, use cythonize
- [x] closes #18089

Doesn't close #12624, but merits a mention.

Usage:
```
$ export PANDAS_CYTHON_COVERAGE=TRUE
$ python setup.py build_ext --inplace
$ coverage erase
$ pytest pandas/tests/scalar --cov=pandas/_libs
[...]
Name                                      Stmts   Miss  Cover   Missing
-----------------------------------------------------------------------
pandas/_libs/__init__.py                      1      0   100%
pandas/_libs/algos.pyx                      162    116    28%   43, 45-47, 58, 66, 82-107, 132-145, 149-153, 160-181, 183, 198-206, 209, 212-244, 263-275, 278-284, 288-289, 292-299, 302-310
pandas/_libs/algos_common_helper.pxi       1884   1851     2%   25-1203, 1214-1942, 1958-1962, 1964, 1967, 1974-1976, 1981-1987, 1989-1991, 1999-3171, 3177-3227, 3232-3243
pandas/_libs/groupby.pyx                    168    148    12%   29-94, 113-134, 143-163, 165-171, 190-207, 210-213, 224-257, 260-265, 293-303, 306-314, 317-323, 354-380
pandas/_libs/hashing.pyx                     97     94     3%   48-190
pandas/_libs/hashtable.pyx                   83     75    10%   59-142, 154-177
pandas/_libs/hashtable_class_helper.pxi     846    828     2%   19-805, 810, 813, 818-829, 837-864, 878-1423
pandas/_libs/index.pyx                      384    300    22%   34, 36-39, 46, 49-71, 81-89, 95-100, 110, 114, 126, 130, 135-143, 147, 153-202, 204, 211-214, 221, 223, 227, 233-236, 245-258, 261, 277, 280, 289, 293-314, 318-403, 406, 409, 411, 415-429, 433-434, 440-525, 536-542, 546, 549-694
pandas/_libs/index_class_helper.pxi          95     90     5%   14-115, 117, 120, 122-123, 126-165
[...]
```

(I'll post results from a full test run in a bit)

Apparently there is an issue with the Cython.Coverage plugin that causes cdef function/class definition lines to not get covered.  Not sure if that's going to be fixed or if we need to find a workaround.

To make `cythonize` work I had to move `util.pxd` to `tslibs`, then cimport everything into a _libs.util pxd namespace.  There may be a way around this that I haven't found.  If not, there are parts of `tslibs.util` that are not used in `tslibs`, can be moved to `_libs.util`.

We _could_ remove a whole bunch more from the `ext_data` dictionary, but I'm saving that until after the first pass of the review process.  (I think doing so will lighten the build, not sure)

This will have a merge conflict with #21878, but it'll be easy to resolve when the time comes.
