pandas.DataFrame.fillna automatically converts the dtypes of columns without missing values in them
If a columns is treated by pandas.DataFrame.fillna and it doesnt have any missing values then pandas automatically converts the datatypes of columns 'int','float' or 'bool' if it can
You can reproduce the behavior here: 

```
improt pandas as pd
x = pd.DataFrame({'a':[1,2,np.nan,3],'d':['x','y','z',np.nan],'e':[1,1,2,2]})
x['e'] = x['e'].astype('O')
obj_cols = x.select_dtypes(include='O').columns
print(x.loc[:,obj_cols].dtypes)
#d    object
#e    object
# dtype: object
x.loc[:,obj_cols]=x.select_dtypes(include='O').fillna('missing')
print(x.loc[:,obj_cols].dtypes)
#d    object
#e     int64
#dtype: object]
```

is this a bug or a feature?
