BUG: loc setting NaN in an int column should upcast
I think upcasting to float should occur here.

For example:

```
In [1]: df = pd.DataFrame([[0, 0]])

In [2]: df.loc[0] = np.nan

In [3]: df
Out[3]:
                     0                    1
0 -9223372036854775808 -9223372036854775808
```

Sometimes this is caught:

```
In [11]: df = pd.DataFrame([[0]])

In [12]: df.loc[0] = np.nan
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-92653b6a9ef8> in <module>()
----> 1 df.loc[0] = np.nan

/Users/234BroadWalk/pandas/core/indexing.pyc in __setitem__(self, key, value)
     86
     87         self._setitem_with_indexer(indexer, value)
---> 88
     89     def _has_valid_tuple(self, key):
     90         pass

/Users/234BroadWalk/pandas/core/indexing.pyc in _setitem_with_indexer(self, indexer, value)
    183             if np.prod(values.shape):
    184                 values[indexer] = value
--> 185
    186     def _align_series(self, indexer, ser):
    187         # indexer to assign Series can be tuple or scalar

ValueError: cannot convert float NaN to integer
```
