BUG: TDI.insert with empty TDI raising IndexError
This started out as a cosmetic-only branch and ended up finding a broken corner case.  The relevant change is in timedeltas L416 where `if self.freq is not None:` is now `if self.size and self.freq is not None:`

Using _check_compatible_with causes us to raise TypeError instead of ValueError in a couple of the DatetimeIndex.insert cases.
@simonjayhawkins suggestions for fixing mypy? ```
mypy 0.730
Performing static analysis using mypy
pandas/core/indexes/timedeltas.py:56: error: Definition of "_data" in base class "ExtensionIndex" is incompatible with definition in base class "DatetimelikeDelegateMixin"
pandas/core/indexes/timedeltas.py:56: error: Definition of "_data" in base class "Index" is incompatible with definition in base class "DatetimelikeDelegateMixin"
pandas/core/indexes/datetimes.py:87: error: Definition of "_data" in base class "ExtensionIndex" is incompatible with definition in base class "DatetimelikeDelegateMixin"
pandas/core/indexes/datetimes.py:87: error: Definition of "_data" in base class "Index" is incompatible with definition in base class "DatetimelikeDelegateMixin"
Found 4 errors in 2 files (checked 844 source files)
``` > @simonjayhawkins suggestions for fixing mypy?

am AFK for the rest of the day (Pydata London). will look tomorrow. ping on green. ping can you rebase thanks @jbrockmendel 