Fix TimedeltaIndex constructor fastpath when name is set
Fixes #10025

For the record, I don't think it is actually a good idea to return an existing object from an index constructor. This leads to weird things like:

```
new_idx = pd.Index(old_idx)
new_index.name = 'foo'
# also sets old_idx.name!
```

We should preserve the old data and hashtable, if possible, but not everything on an Index object is immutable (name/names is the main exception).
 you are setting the name directly, use `set_names` to get a new object

```
In [24]: i = Index(range(5),name='foo')

In [25]: i2 = Index(i,name='bar')

In [26]: i3 = i2.set_names('baz')

In [27]: i.name
Out[27]: 'foo'

In [28]: i2.name
Out[28]: 'bar'

In [29]: i3.name
Out[29]: 'baz'
```
 @jreback do you really think it is a good idea for the `Index` constructor to return the same object that was passed in? I agree that `set_names` is cleaner here...
 @shoyer its prob IS a bug that it is doing that. I _think_ that it should be a shallow copy always. See what the other indexes do. Certainly no tests for this type of aliasing I'll bet.
 thanks!
