BUG: Fix df.loc slice support
- [x] closes #8856
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

@jreback Oops, sorry! I overlooked another test.
The `MultiIndex` `loc` slicing work at the first level.
https://github.com/pandas-dev/pandas/blob/master/pandas/tests/test_multilevel.py#L1829
### Input:
```python
s = pd.Series(np.arange(8), pd.MultiIndex.from_product(([0, 1, 2, 3], list('ab'))))
s.loc[::2] = 200
s
```
### Output:
```
0  a    200
   b    200
1  a      2
   b      3
2  a    200
   b    200
3  a      6
   b      7
```

But, this returns the crazy result.
### Input:
```python
index = pd.MultiIndex(levels=[['foo', 'bar', 'baz', 'qux'], ['one', 'two','three']],
                      labels=[[0, 0, 0, 1, 1, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 1, 2, 0, 1, 2]],
                      names=['first', 'second'])
frame = pd.DataFrame(np.random.randn(10, 3), index=index, columns=pd.Index(['A', 'B', 'C'], name='exp'))
frame.loc['foo':'bar':4]
```
### Output:
```
exp                  A         B         C
first second
foo   one     0.870785  1.900457 -0.907938
bar   two    -0.290714 -0.211697 -0.957994
```

 @toobaz if you'd have a look I think slicing by string is not good since `slice` seems not supporting to handle string. @Licht-T : I'm confused. Unless I'm missing anything, your changes to code are limited to ``pd.MultiIndex.get_loc``, but in up-to-date master,
- none of the problematic examples in #8856 hits ``pd.MultiIndex.get_loc``
- none of the tests you add addresses any of the problematic examples in #8856 
- none of the tests you add hits ``pd.MultiIndex.get_loc``

... ? closing as stale. ping if you want to update.