Support customised S3 servers endpoint URL
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Add support for customised S3 servers via checking the environment variable `S3_ENDPOINT`.

If set, the value of `S3_ENDPOINT` will be passed to the `endpoint_url` parameter for `boto3.Session`. It should be the complete URL to S3 service following the format: http(s)://{host}:{port}.

This feature is useful for companies who use their own S3 servers like MinIO, Ceph etc, as mentioned in issue  #26195
Is S3_ENDPOINT a common variable in the S3 ecosystem? Should s3fs just be using it as the default value for `endpoint_url` if it's not otherwise specified?

Ideally, pandas has as little s3-specific code as possible. We'd like to delegate it to other libraries. Hi @TomAugspurger.  In this commit, if `S3_ENDPOINT` is not specified, s3fs will be using the default value for `endpoint_url`, i.e., `None`, as documented in [Boto3 client API](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session.client). In this case, s3fs will connect to AWS S3 by default. Therefore, people need minimal effort to use s3 with pandas: for those who are using AWS S3, simply use it as it was before; while for people use their own s3 servers, define `S3_ENDPOINT` environment variable. 

`S3_ENDPOINT` is a common variable to be set if people use their own S3 compatible object storage servers instead of AWS S3. This scenario is becoming more and more common as solutions like MinIO, Ceph gains more popularity. One example is that [tensorflow supports S3 via `S3_ENDPOINT` environment variable](https://github.com/tensorflow/examples/blob/master/community/en/docs/deploy/s3.md).   Pandas used to support this option by specifying `AWS_S3_HOST` before switching from boto to s3fs in this [commit](https://github.com/pandas-dev/pandas/commit/dc4b0708f36b971f71890bfdf830d9a5dc019c7b#diff-a37b395bed03f0404dec864a4529c97dL94) as discussed in #26195.  Agreed with Jeff. I would prefer to see this in s3fs. closing as out of scope for pandas, encourage to submit to s3fs. Would appreciate is people on this thread would comment in https://github.com/dask/s3fs/issues/273 as to how they would expect users to codify such arguments. I suppose environment variables is certainly an option, but passing arguments would be preferable. The linked issue talks about embedding these arguments in the URL itself.