BUG/REF: TimedeltaIndex.__new__
`TimedeltaIndex.__new__` type-checking is tough to decipher, and hides multiple bugs

```
>>> dti = pd.date_range('2016-01-01', periods=3)
>>> pd.TimedeltaIndex(np.array(dti))
TimedeltaIndex(['16801 days', '16802 days', '16803 days'], dtype='timedelta64[ns]', freq=None)
```

In addition to this incorrect behavior being supported, it is actually _tested_ in `tests.indexes.timedeltas.test_ops` in what I have to assume is a copy/paste mixup of some kind. 

```
>>> pd.TimedeltaIndex([0.5])
TimedeltaIndex(['0 days'], dtype='timedelta64[ns]', freq=None)
```

This PR fixes the constructor to

1) be much more linear and clear than the existing constructor
2) reject datetime64 and anything that isn't explicitly supported
3) accept floating-dtype if and only if they can be converted losslessly: `np.array([19.0])` is OK, `np.array([19.5])` is not.  `np.nan` is correctly converted to `NaT`

Other assorted small changes:
Move an incorrectly placed `# ----` section divider in scalar timedelta tests.
Change a repeated-4-times 4-liner (setting `result.freq = inferred_freq`) to a 2-linear
Move raising and returning-early cases to the top of `DatetimeIndex.__new__` and `TimedeltaIndex.__new__`

Has tests, does not have whatsnew note, pending suggestions as to which parts merit notes.

Does not significantly change the TimedeltaArray constructor; in an upcoming step we can move much of the logic there and have the TDI constructor wrap a/the TDA constructor.