BUG: Unsorted and Monotonic Indexes respond differently on non-existant key(s) slicing
For a python list, bad-indexing can result in `IndexError`:

```
>>> ls = ["a", "b", "c"]
>>> ls[1]
"b"
>>> ls[5]
IndexError("list index out of range")
```

Slicing behaves differently and returns empty list with bad indexes:
```
>>> ls[2:5]
["c"]
>>> ls[4:5]
[]
```

For a **monotonic** `Index` pandas behaves in the same way either when a single key or list of keys is given compared with a slice:

```
>>> ser = Series([1,2,3], index=["a", "b", "c"])

# single key
>>> ser.loc["a"]
1
>>> ser.loc["!"]
KeyError("!")

# list of keys
>>> ser.loc[["a", "b"]]
Series([1, 2], index=["a", "b"])
>>> ser.loc[["!", "a"]]
KeyError("['!'] not in index")
>>> ser.loc[["!", "!!"]]
KeyError("None of [Index(['!', '!!'], dtype='object')] are in the [index]")

# key slicing
>>> ser.loc[slice("a","b")]
Series([1, 2], index=["a", "b"])
>>> ser.loc[slice("a", "!")]
Series([], dtype: int64)
>>> ser.loc[slice("!", "!!")]
Series([], dtype: int64)
```

For a non-monotonic (**unsorted**) index the behaviour is the same except for the empty return:

```
>>> ser = Series([1,3,2], index=["a", "c", "b"])

# key slicing
>>> ser.loc[slice("a", "b")
Series([1, 3, 2], index=["a", "c", "b"])
>>> ser.loc[slice("a", "!")]
KeyError("!")
>>> ser.loc[slice("!", "!!")]
KeyError("!")
```

Anyone with ideas?
