Port Timedelta implementation to tslibs.timedeltas
Cut/paste Timedelta and _Timedelta methods into tslibs.timesdeltas._Timedelta.  The moved methods are copied verbatim.

Timedelta._binary_op_method_timedeltalike and Timedelta._op_unary_method do not use `self`, are moved out of the class definitions (but stay in tslib).  (In a follow-up _op_unary_method can be moved to tslibs.timedeltas, _binary_op_method_timedeltalike cannot.)

Most of the rest of _Timedelta&Timedelta can be moved into tslibs.timedeltas._Timedelta after #17793.

On the side, cleanup in core.indexes of redundant isinstance checks.

- [ ] closes #xxxx
- [ ] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
