BUG: type diversity breaks alignment
closes https://github.com/pydata/pandas/issues/8258, but more generally, on pandas master, assignment with indexer will align _both rows and columns_ if all columns have the same type:

```
>>> cols, idx = ['jim', 'joe', 'jolie'], ['first', 'last']
>>> vals = np.arange(1, 7).reshape(2, 3, order='F')
>>> df = DataFrame(vals, columns=cols, index=idx)
>>> left, rhs = df.copy(), - df.iloc[::-1, -2::-1]
>>> print(left, rhs, sep='\n')
       jim  joe  jolie
first    1    3      5
last     2    4      6
       joe  jim
last    -4   -2
first   -3   -1
>>> 
>>> left.loc[:, ['jim', 'joe']] = rhs
>>> left
       jim  joe  jolie
first   -1   -3      5
last    -2   -4      6
```

However, if I change the type of a column even _outside_ the section which gets assigned to, _only columns_ are aligned:

```
>>> df = DataFrame(vals, columns=cols, index=idx)
>>> df['jolie'] = df['jolie'].astype('float64')
>>> left, rhs = df.copy(), - df.iloc[::-1, -2::-1]
>>> print(left, rhs, sep='\n')
       jim  joe  jolie
first    1    3      5
last     2    4      6
       joe  jim
last    -4   -2
first   -3   -1
>>> 
>>> left.loc[:, ['jim', 'joe']] = rhs
>>> left
       jim  joe  jolie
first   -2   -4      5
last    -1   -3      6
```

Code-wise this is a bug, because [this line](https://github.com/pydata/pandas/blob/fccd7feabfe0bf15c30d712f3a4a4ff71e76ad4a/pandas/core/indexing.py#L446) is taking the _entire frame_'s index and re-indexes to that, regardless of the actual indexer which selects a section of the frame to assign to. That said, there are two places in tests where they rely on this behaviour, [here](https://github.com/pydata/pandas/blob/fccd7feabfe0bf15c30d712f3a4a4ff71e76ad4a/pandas/tests/test_frame.py#L1405) and [here](https://github.com/pydata/pandas/blob/fccd7feabfe0bf15c30d712f3a4a4ff71e76ad4a/pandas/tests/test_indexing.py#L1033).
