BUG: DataFrame inplace where doesn't work for mixed datatype frames
Noticed the following: `DataFrame.where` with `inplace=True` only works when `DataFrame` is of a single dtype (because it relies on calling `np.putmask` on `DataFrame.values` which is only a view in the single dtype case)

``` python
In [1]: import pandas as p

In [2]: import numpy as np

In [3]: df=p.DataFrame({'a': [1.0, 2.0, 3.0, 4.0], 
   ...:                 'b': [4.0, 3.0, 2.0, 1.0]}) # single dtype

In [4]: df.where(df > 2, np.nan)
Out[4]: 
    a   b
0 NaN   4
1 NaN   3
2   3 NaN
3   4 NaN

In [5]: df.where(df > 2, np.nan, inplace=True)

In [6]: df
Out[6]: 
    a   b
0 NaN   4
1 NaN   3
2   3 NaN
3   4 NaN

In [7]: df=p.DataFrame({'a': [1, 2, 3, 4],
   ...:                 'b': [4.0, 3.0, 2.0, 1.0]}) # mixed dtypes

In [8]: df.where(df > 2, np.nan) # ok
Out[8]: 
    a   b
0 NaN   4
1 NaN   3
2   3 NaN
3   4 NaN

In [9]: df.where(df > 2, np.nan, inplace=True) # not ok

In [10]: df
Out[10]: 
   a  b
0  1  4
1  2  3
2  3  2
3  4  1

```
