Raise warning when automatically converting datatypes
A frequent bug I end up fixing in my own code when working with integer data results from my data auto converting to float, usually on a merge, reindex, unstack, or pivot.

```
In [6]: df = pd.DataFrame(np.random.randn(5, 5), columns=list('abcde'), dtype=int)

In [7]: df.dtypes
Out[7]:
a    int64
b    int64
c    int64
d    int64
e    int64
dtype: object

In [8]: df.reindex(range(3)).dtypes
Out[8]:
a    int64
b    int64
c    int64
d    int64
e    int64
dtype: object

In [9]: df.reindex(range(6)).dtypes
Out[9]:
a    float64
b    float64
c    float64
d    float64
e    float64
dtype: object
```

As far as I know, there is no way to know whether this has happened without doing additional checks after an operation.... or fixing my code, but that would be much easier if I could catch a warning, since i am often performing a long series of operations and figuring out which one converted everything to float is time consuming.

I would also like to suggest converting to object over converting to float if nans are being produced.  At least types of existing data would be preserved.

(I realize reindex is not the ideal choice since it has fill_value as an argument)
