ENH/BUG: Period/PeriodIndex supports NaT

Closes #7228. Closes #4731.

`Period` and `PeriodIndex` now can contain `NaT` using `iNaT` as its internal value.


Because it was called by ``shift``, ``__add__`` and ``__sub__``. But it looks better to move this logic to ``shift``, and let ``__add__`` and ``__sub__`` to call ``shift`` (like ``DatetimeIndex`` does).