BUG: extending object series on assignment with datetime coerces to int
"Assigning with extending" an object series with a datetime / timestamp introduces an int:

```
In [63]: s = pd.Series([pd.Timestamp("2016-01-01")])

In [64]: s
Out[64]: 
0   2016-01-01
dtype: datetime64[ns]

In [65]: s[1] = datetime.datetime(2016, 1, 2)

In [66]: s
Out[66]: 
0   2016-01-01
1   2016-01-02
dtype: datetime64[ns]

In [67]: s = pd.Series([pd.Timestamp("2016-01-01")], dtype=object)

In [68]: s[1] = datetime.datetime(2016, 1, 2)

In [69]: s
Out[69]: 
0    2016-01-01 00:00:00
1    1451692800000000000
dtype: object
```

---

original report:

<details>

#### Code Sample, a copy-pastable example if possible

```python
# Your code here
import urllib.request
import datetime as dt
import pandas as pd

def get_google_data(symbol, period, window, exch = 'NYSE'):
    url_root = ('http://www.google.com/finance/getprices?i='
                + str(period) + '&p=' + str(window)
                + 'd&f=d,o,h,l,c,v&df=cpct&x=' + exch.upper()
                + '&q=' + symbol.upper())
    response = urllib.request.urlopen(url_root)
    data=response.read().decode().split('\n')       #decode() required for Python 3
    data = [data[i].split(',') for i in range(len(data)-1)]
    header = data[0:7]
    data = data[7:]
    header[4][0] = header[4][0][8:]                 #get rid of 'Columns:' for label row
    df=pd.DataFrame(data, columns=header[4])
    df = df.dropna()                                #to fix the inclusion of more timezone shifts in the .csv returned from the goog api
    df.index = range(len(df))                       #fix the index from the previous dropna()

    ind=pd.Series(len(df))
    for i in range(len(df)):
        if df['DATE'].ix[i][0] == 'a':
            anchor_time = dt.datetime.fromtimestamp(int(df['DATE'].ix[i][1:]))  #make datetime object out of 'a' prefixed unix timecode
            ind[i]=anchor_time
        else:
            t = anchor_time +dt.timedelta(seconds = (period * int(df['DATE'].ix[i])))
            ind[i] = t
    df.index = ind

    df=df.drop('DATE', 1)

    for column in df.columns:                
        df[column]=pd.to_numeric(df[column])

    return df

```
#### Problem description

Under 0.21 (0.20.3, 0.19 ...etc) I got expected result when I call
```
>>> from get_google_data import get_google_data
>>> get_google_data('NUGT', 300, 200, 'NYSEARCA')
                       CLOSE     HIGH      LOW     OPEN    VOLUME
2017-09-13 04:00:00  39.5500  39.8400  37.9201  38.4100   4506107
2017-09-13 04:05:00  37.3800  39.3300  37.0800  39.1500   5723511
2017-09-13 04:10:00  38.0600  38.4400  36.5000  37.3000   5892153
...
```

But After upgrade to 0.21, I got

```
>>> from get_google_data import get_google_data
>>> get_google_data('NUGT', 300, 20, 'NYSEARCA')
                       CLOSE     HIGH      LOW     OPEN    VOLUME
2017-10-25 04:00:00  31.02  31.8500  30.8500  31.5000   6947080
1508904600000000000  30.43  31.0800  29.8500  31.0300   7214226
1508905200000000000  28.83  30.5800  28.4100  30.4300  10026369
1508905800000000000  29.42  29.6500  28.4000  28.8600   6217398
...
```
datetime object assigned to index becomes int type.
` ind[i] = t`

#### Expected Output

>                        CLOSE     HIGH      LOW     OPEN    VOLUME
> 2017-09-13 04:00:00  39.5500  39.8400  37.9201  38.4100   4506107
> 2017-09-13 04:05:00  37.3800  39.3300  37.0800  39.1500   5723511
> 2017-09-13 04:10:00  38.0600  38.4400  36.5000  37.3000   5892153

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