BUG: Series.align with MultiIndex may be inverted
Closes #10665. Closes #10741.

I'm adding some more tests for `Index.join`, and found a skeptic behavior.

For `right` join, all levels / labels of right side remains (OK).

```
import pandas as pd
midx = pd.MultiIndex.from_product([[0, 1], [0, 1, 2]], names=['a', 'b'])
idx = pd.Index([1, 2 ,3], name='b')

idx.join(midx, how='right')
# MultiIndex(levels=[[0, 1], [0, 1, 2]],
#            labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]],
#            names=[u'a', u'b'])
idx.join(midx, how='right').values
# array([(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)], dtype=object)
```

For `left` join, all levels are remain but not used as levels. Thus, values only on left side is dropped (NG).

```
idx.join(midx, how='left')
# MultiIndex(levels=[[0, 1], [1, 2, 3]],
#            labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
#            names=[u'a', u'b'])
idx.join(midx, how='left').values
array([(0, 1), (0, 2), (1, 1), (1, 2)], dtype=object)
```

I understand the last result must be the following. If my understanding is correct, I'll include the fix to this PR.

```
idx.join(midx, how='left')
# MultiIndex(levels=[[0, 1], [1, 2, 3]],
#            labels=[[0, 0, 1, 1], [0, 1, 2, 0, 1, 2]],
#            names=[u'a', u'b'])
idx.join(midx, how='left').values
# array([(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)], dtype=object)
```

thanks @sinhrks 
