ENH: Validation to only allow positive integers for options
- [x] closes #23348
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

I looked at several different options for providing this functionality.  In the end it seemed best to create a a new function that returns a validation function to only allow positive integers.  So now we have is_pos_int available along side the existing is_int and is_text function.  display.max_rows has been modified to use this new validation.  I went through the other integer based display options and tested each with a negative int to see what else might be broken.  display.precision and display.max_columns both had issues when set to a negative number prior to displaying a dataframe.  They have been changed as well.
py37_np_dev test is failing  with the error below.  Not sure why.  I notice this is happening on other pull requests as well:

```
File "/home/vsts/miniconda3/envs/pandas-dev/lib/python3.7/site-packages/pytest_nunit/plugin.py", line 276, in <genexpr> list(case for case in self.cases.values() if case["outcome"] == "passed") KeyError:  outcome'
``` Is there anything else I need to do on this one? It still shows as Changes requested, but those changes have been integrated into later commits.  I just want to make sure nobody is waiting on me for this one. lgtm. over to you @WillAyd  thanks @Adam-Klaum !