PERF: parse and timedelta ops improvements, #6755
closes #6755 

```
-------------------------------------------------------------------------------
Test name                                    | head[ms] | base[ms] |  ratio   |
-------------------------------------------------------------------------------
dtype_infer_timedelta64_1                    |   7.0527 | 119.7317 |   0.0589 |
timedelta_convert_string                     |  13.3094 | 108.9200 |   0.1222 |
timedelta_convert_string_seconds             |  18.2626 |  85.0617 |   0.2147 |
dtype_infer_timedelta64_2                    |   9.4047 |   9.4063 |   0.9998 |
timedelta_convert_int                        |   0.1300 |   0.1260 |   1.0315 |
-------------------------------------------------------------------------------
Test name                                    | head[ms] | base[ms] |  ratio   |
-------------------------------------------------------------------------------

Ratio < 1.0 means the target commit is faster then the baseline.
Seed used: 1234

Target [da92dc0] : PERF: timedelta and datetime64 ops improvements
Base   [d8a2f30] : Check for size=0 before setting item
Fixes #10193

```

This is a cython conversion of the timedelta parsing routines. Was much more involved that it looked, as the original was using regexes, this is a string parsing state machine in cython.

However, I think this could actually be done in c (or maybe using `char *` pointers in cython), rather than the list build up. This could be another 10x perf improvement on this (my benchmark is the c parser for ISO datetimes).

if any of the c gurus are interested, pls comment!
