Dataframe w/ DatetimeIndex memory leak
#### Code Sample, a copy-pastable example if possible

```python
import gc
import numpy as np
import pandas as pd
from memory_profiler import profile


@profile
def leaky_af():
    channels = ['Sonya Blade', 'Johnny Cage', 'Raiden', 'Scorpion', 'Kano']

    data_df = pd.DataFrame()  # w/ default index
    for channel in channels:
        data = pd.Series(data=np.random.random(50000),
                         index=pd.DatetimeIndex(np.arange(0, 50000)))
        data_df[channel] = data
    return


@profile
def tight():
    channels = ['Sonya Blade', 'Johny Cage', 'Raiden', 'Scorpion', 'Kano']

    data_df = pd.DataFrame(index=pd.DatetimeIndex([]))  # w/ DatetimeIndex
    for channel in channels:
        data = pd.Series(data=np.random.random(50000),
                         index=pd.DatetimeIndex(np.arange(0, 50000)))
        data_df[channel] = data
    return

def main():
    """
    leaky_af or tight is ran in a loop. The functions are self-contained, accepts nothing,
    returns nothing. Yet, memory usage increases (if leaky_af is used) proportional to the
    length of the loop.
    """
    for i in range(50):
        leaky_af()  # replace with tight(), and memory usage stabilizes
        gc.collect()

if __name__ == '__main__':
    main()

```
#### Problem description

Memory seems to leak when adding new Series with DatetimeIndex columns to an empty DataFrame (which was initialized with default index). The DataFrame is created in a self-contained functions which
accepts nothing and returns nothing. So all objects inside that function have no references outside its scope and should be released from memory. Still, memory usage increases steadily when the functions is called repeatedly in a loop. 

However, if the DataFrame is initialized with an empty DatetimeIndex index, the leakage stops.

Note, I'm aware that leaky_af may trigger some copying when appending series with different index type, and that's fine. However, that copy should also be destroyed when leaky_af() ends (and returns nothing). 

##### main() called with tight()
![pandas tight](https://user-images.githubusercontent.com/18338679/35561333-39e99430-05b0-11e8-8fb3-bd06f46a3ddd.png)

##### main() called with leaky_af()
![pandas leaky_af](https://user-images.githubusercontent.com/18338679/35561335-3ce0feda-05b0-11e8-95c0-6c58504e8e85.png)

#### Expected Output

#### Output of ``pd.show_versions()``

pandas 0.22.0
python 2.7.14 (not tested in python 3)

</details>
