BUG: loc fails on PeriodIndex within MultiIndex
Related to https://github.com/pydata/pandas/issues/9892, but this doesn't even work with Periods themselves.

Came across this while searching to see if this had an existing issue, my guess is that this would dramatically help with these Period issues: https://github.com/pydata/pandas/issues/7651

``` python
In [2]: df=pd.DataFrame(pd.np.random.rand(10,2), index=pd.MultiIndex.from_product([range(2), pd.PeriodIndex(start='2000', periods=5, freq='A')]))

In [3]: df
Out[3]: 
               0         1
0 2000  0.919658  0.631754
  2001  0.806508  0.473935
  2002  0.982759  0.886278
  2003  0.597954  0.931326
  2004  0.296699  0.014161
1 2000  0.675734  0.927880
  2001  0.967144  0.653101
  2002  0.683310  0.600392
  2003  0.475080  0.984913
  2004  0.228324  0.226254

In [4]: df.loc[(slice(None), slice(pd.Period('2003',freq='A')))]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()

pandas/hashtable.pyx in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6589)()

TypeError: an integer is required

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in get_loc(self, key, method, tolerance)
   1944             try:
-> 1945                 return self._engine.get_loc(key)
   1946             except KeyError:

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4084)()

KeyError: Period('2003', 'A-DEC')

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()

pandas/hashtable.pyx in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6589)()

TypeError: an integer is required

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind)
   2906         try:
-> 2907             slc = self.get_loc(label)
   2908         except KeyError as err:

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in get_loc(self, key, method, tolerance)
   1946             except KeyError:
-> 1947                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   1948 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4084)()

KeyError: Period('2003', 'A-DEC')

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-4-af43b0d9a3b9> in <module>()
----> 1 df.loc[(slice(None), slice(pd.Period('2003',freq='A')))]

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in __getitem__(self, key)
   1292 
   1293         if type(key) is tuple:
-> 1294             return self._getitem_tuple(key)
   1295         else:
   1296             return self._getitem_axis(key, axis=0)

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in _getitem_tuple(self, tup)
    782     def _getitem_tuple(self, tup):
    783         try:
--> 784             return self._getitem_lowerdim(tup)
    785         except IndexingError:
    786             pass

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in _getitem_lowerdim(self, tup)
    889         # we may have a nested tuples indexer here
    890         if self._is_nested_tuple_indexer(tup):
--> 891             return self._getitem_nested_tuple(tup)
    892 
    893         # we maybe be using a tuple to represent multiple dimensions here

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in _getitem_nested_tuple(self, tup)
    962 
    963             current_ndim = obj.ndim
--> 964             obj = getattr(obj, self.name)._getitem_axis(key, axis=axis)
    965             axis += 1
    966 

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
   1435         if isinstance(key, slice):
   1436             self._has_valid_type(key, axis)
-> 1437             return self._get_slice_axis(key, axis=axis)
   1438         elif is_bool_indexer(key):
   1439             return self._getbool_axis(key, axis=axis)

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/indexing.py in _get_slice_axis(self, slice_obj, axis)
   1316         labels = obj._get_axis(axis)
   1317         indexer = labels.slice_indexer(slice_obj.start, slice_obj.stop,
-> 1318                                        slice_obj.step, kind=self.name)
   1319 
   1320         if isinstance(indexer, slice):

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in slice_indexer(self, start, end, step, kind)
   2783         """
   2784         start_slice, end_slice = self.slice_locs(start, end, step=step,
-> 2785                                                  kind=kind)
   2786 
   2787         # return a slice

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in slice_locs(self, start, end, step, kind)
   2968         end_slice = None
   2969         if end is not None:
-> 2970             end_slice = self.get_slice_bound(end, 'right', kind)
   2971         if end_slice is None:
   2972             end_slice = len(self)

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind)
   2908         except KeyError as err:
   2909             try:
-> 2910                 return self._searchsorted_monotonic(label, side)
   2911             except ValueError:
   2912                 # raise the original KeyError

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py in _searchsorted_monotonic(self, label, side)
   2865     def _searchsorted_monotonic(self, label, side='left'):
   2866         if self.is_monotonic_increasing:
-> 2867             return self.searchsorted(label, side=side)
   2868         elif self.is_monotonic_decreasing:
   2869             # np.searchsorted expects ascending sort order, have to reverse

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/base.py in searchsorted(self, key, side, sorter)
   1112     def searchsorted(self, key, side='left', sorter=None):
   1113         # needs coercion on the key (DatetimeIndex does already)
-> 1114         return self.values.searchsorted(key, side=side, sorter=sorter)
   1115 
   1116     _shared_docs['drop_duplicates'] = (

pandas/src/period.pyx in pandas._period.Period.__richcmp__ (pandas/src/period.c:12753)()

TypeError: Cannot compare type 'Period' with type 'int'
```

If we pass the ordinal, it doesn't raise, but also doesn't work:

``` python
In [5]: df.loc[(slice(None), slice(pd.Period('2003',freq='A').ordinal))]
Out[5]: 
               0         1
0 2000  0.919658  0.631754
  2001  0.806508  0.473935
  2002  0.982759  0.886278
  2003  0.597954  0.931326
  2004  0.296699  0.014161
1 2000  0.675734  0.927880
  2001  0.967144  0.653101
  2002  0.683310  0.600392
  2003  0.475080  0.984913
  2004  0.228324  0.226254
```
