Added ISO 8601 Duration string constructor for Timedelta
State: closed

- [X] closes #19040 
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

ASV results below

```
· Running 16 total benchmarks (2 commits * 1 environments * 8 benchmarks)
[  0.00%] · For pandas commit hash 6eda5188:
[  0.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt...
[  0.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[  6.25%] ··· Running timedelta.TimedeltaConstructor.time_from_components                                                               14.6±0.2μs
[ 12.50%] ··· Running timedelta.TimedeltaConstructor.time_from_datetime_timedelta                                                       7.17±0.1μs
[ 18.75%] ··· Running timedelta.TimedeltaConstructor.time_from_int                                                                     5.86±0.08μs
[ 25.00%] ··· Running timedelta.TimedeltaConstructor.time_from_iso_format                                                               20.7±0.4μs
[ 31.25%] ··· Running timedelta.TimedeltaConstructor.time_from_missing                                                                 2.11±0.03μs
[ 37.50%] ··· Running timedelta.TimedeltaConstructor.time_from_np_timedelta                                                             4.79±0.1μs
[ 43.75%] ··· Running timedelta.TimedeltaConstructor.time_from_string                                                                  6.32±0.08μs
[ 50.00%] ··· Running timedelta.TimedeltaConstructor.time_from_unit                                                                     6.22±0.1μs
[ 50.00%] · For pandas commit hash 6552718d:
[ 50.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt...
[ 50.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 56.25%] ··· Running timedelta.TimedeltaConstructor.time_from_components                                                               14.8±0.2μs
[ 62.50%] ··· Running timedelta.TimedeltaConstructor.time_from_datetime_timedelta                                                      7.28±0.09μs
[ 68.75%] ··· Running timedelta.TimedeltaConstructor.time_from_int                                                                      5.67±0.1μs
[ 75.00%] ··· Running timedelta.TimedeltaConstructor.time_from_iso_format                                                                   failed
[ 81.25%] ··· Running timedelta.TimedeltaConstructor.time_from_missing                                                                 2.09±0.05μs
[ 87.50%] ··· Running timedelta.TimedeltaConstructor.time_from_np_timedelta                                                            4.74±0.04μs
[ 93.75%] ··· Running timedelta.TimedeltaConstructor.time_from_string                                                                   5.97±0.1μs
[100.00%] ··· Running timedelta.TimedeltaConstructor.time_from_unit                                                                     6.29±0.1μs
SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

Labels:
name: Enhancement
name: Timedelta
description: Timedelta data type

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=h1) Report
> Merging [#19065](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/35b2aba7386619dc156ca245cab781d3aea37789?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/19065/graphs/tree.svg?token=eZ4WkYLtcO&width=650&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master   #19065   +/-   ##
=======================================
  Coverage   91.51%   91.51%           
=======================================
  Files         148      148           
  Lines       48680    48680           
=======================================
  Hits        44550    44550           
  Misses       4130     4130
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.88% <ø> (ø)` | :arrow_up: |
| #single | `41.68% <ø> (ø)` | :arrow_up: |


------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=footer). Last update [35b2aba...6bab9da](https://codecov.io/gh/pandas-dev/pandas/pull/19065?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

thanks!
Just seeing this and https://github.com/pandas-dev/pandas/issues/11375 now.

In https://github.com/pandas-dev/pandas/issues/11375#issuecomment-149696766 @jorisvandenbossche mentioned these would be better represented as `DateOffsets`, since there's some debate about whether ISO 8601 durations are relative (DateOffset) or absolute (TimeDelta)

I *think* it's still useful to support this as a format for parsing timedeltas, but we may want to put some warnings / caveats in the documentation.