Use `python-requests` library, if installed, to support broad http(s) scenarios including Basic Authentication
Use `python-requests` ([Python HTTP Requests for Humans](https://github.com/requests/requests)) , if installed, to enable additional scenarios as Basic Authentication, permit self-signed SSL certs, and other advanced scenarios.

A new optional parameter  `url_params` is added into `read_csv`, `read_html`, `read_excel` and `read_json` to allow passing in either a dict containing authentication, etc or even a requests session. It also allows passing in basic auth in url: http://<usr>:<pwd>@<fqdn>:<port>/  and fixes #Issue #16910 Also, better handling of specified `:<port>` in url.

If `python-requests` library is not installed, existing behavior prior to this check-in should continue as-is, which directly calls `urllib\urllib3`

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