ENH: create Timedelta scalar / TimedeltaIndex

closes #3009
closes #8187
closes #8209
closes #4533 

This PR creates a new ``timedelta`` sub-class, the scalar ``Timedelta``, very similar to how ``Timestamp`` sub-classes ``datetime``. Further it creates a ``TimedeltaIndex`` modelled on ``DatetimeIndex`` that holds the underlying data (boxing is only on iteration).

- ToDo
  - Document API changes:
     - [x] ``to_timedelta`` return ``TimedeltaIndex`` rather than a ``Series``
     - [x] ``to_timedelta`` with scalar returns ``Timedelta`` (rather than ``np.timedelta64``)
     - [x] Boxing for ``list(Series(...))`` is now ``Timedelta``
     - [x] possible repr changes
     - [x] ``timedelta_range``
     - [x] usage / examples
     - [x] API
  - Timedelta
      - [x] conversions ``to_timedelta/to_pytimedelta``
  - TimedeltaIndex
      - [x] conversions ``to_pytimedelta``
  - [x] what else needs boxing in Series?
  - [x] fix formatters (Timedelta64Formatter; remove ``repr_timedelta64`` (no longer necessary)
  - [x] create ``timedelta_range`` & fix freq / inferred_freq
  - [x] fix remaining copied methods from DatetimeIndex
  - more tests (of TimedeltaIndex / scalar)
      - [x] scalar comparisons
      - [x] index comparisons
      - [x] getitem / partial string access
      - [x] sql expecting ``np.timedelta64`` ? (currently skipping these 2 tests!!!!), see: https://github.com/jreback/pandas/commit/2743ef16f7dfe55ba63663fa65c5671031af94f1
      - [x] validate series / td ops
  - move methods of ``TimedeltaIndex/DatetimeIndex``
      - [x] move ``DatetimeOpsMixin`` to ``tseries/base.py``?
      - [x] ``shift/take/order``
      - [x] ``slice_indexer``
      - [x] ``append/union/intersection``
      - [x] comparbless?
      - [x] ``.dt`` accessor are ok now
      - [x] move ``.td`` to ``.tdi``
I would add here a subsection going a bit more in detail on the `Timedelta` object, specifically on the creation. Because you say it is a subclass of datetime.timedelta and behaves in a similar manner, but it is somewhat an 'enhanced' version (also string parsing) and there are some differences.

E.g. `datetime.timedelta(10,5)` does not exactly translate to `pd.Timedelta(10, 5)` but to `pd.Timedelta(days=10, seconds=5)`

Things to mention:

How can you create:
- same keyword as `datetime.timedelta` (days, seconds, microseconds, milliseconds, minutes, hours, weeks)
- parse string
- convert integer with specified resolution (D,h,m,s,ms,us,ns)

Has the same methods/attributes as `datetime.timedelta`, but also some extra:
- components
- to_pytimedelta to convert
- round
- ...

Note the differences in behaviour with `datetime.timedelta`:
- resolution returns a string, not a timedelta
- days/seconds/microseconds -> give the total seconds/days/... and not the components