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.