BUG: inconsistency between PeriodIndex.get_value vs get_loc
ATM we have inconsistent treatment for indexing with strings where the string has a higher resolution than the PeriodIndex.  Luckily only one test checks for the inconsistent `PeriodIndex.__contains__` behavior, so fixing it isn't _too_ invasive.

```
pi = pd.period_range("2017-09-01", freq="D", periods=3)
ser = pd.Series(range(5, 8), index=pi)
key = "2017-09-01 00:00:01"

# master
>>> key in pi
True
>>> pi.get_loc(key)
0
>>> pi.get_value(ser, key)
KeyError: '2017-09-01 00:00:01'

# PR
>>> key in pi
False
>>> pi.get_loc(key)
KeyError: '2017-09-01 00:00:01'
>>> pi.get_value(ser, key)
KeyError: '2017-09-01 00:00:01'
```

Note: the diff is fairly big because we're mirroring the code in `get_value`.  Once this is fixed, we'll have get_value dispatch to get_loc and remove basically the same amount of code as we're adding here.