BUG: DataFrame.first_valid_index() fails if there is no valid entry.
Just checking the number of valid entries and if it's zero, return `None`.

Also fixed same issue on `DataFrame.last_valid_index()`.
Add docstrings to both methods of `DataFrame` and `Series`.

- [x] closes #17400
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
