DataFrame.loc/iloc fails to update object with new dtype
Similar to https://github.com/pandas-dev/pandas/issues/4312 and https://github.com/pandas-dev/pandas/issues/5702, but this seems specific to object dtype -> new dytpe.

In this first case, we likely convert the whole block, even though we just wanted `A`.

```python
In [20]: df = pd.DataFrame({"A": [1, 2], "B": [3, 4]}, dtype=object)

In [21]: df.dtypes
Out[21]:
A    object
B    object
dtype: object

In [22]: df.loc[:, ['A']] = df.loc[:, ['A']].astype(int)

In [23]: df.dtypes
Out[23]:
A    int64
B    int64
dtype: object

```

In this one, (maybe a different bug), we fail to convert `['a', 'b']` to float when they start out in an object block with other values.


```python
In [13]: df = pd.DataFrame([[np.nan, np.nan, 1, pd.Timestamp('2000')]], columns=['a', 'b', 'c', 'd'], dtype=object)

In [14]: df.loc[:, ['a', 'b']] = df.loc[:, ['a', 'b']].astype(float)

In [15]: df.dtypes
Out[15]:
a    object
b    object
c    object
d    object
dtype: object
```