[SPARK-3888] [PySpark] limit the memory used by worker

The memory limit of Python worker can be configurable by `spark.executor.python.memory.limit` (in MB), which is 0 by default (means unlimited).

it only works in Linux, so I did not put it in the docs, it will be useful for some advanced users (also no tests).
Why do we need both an environment variable and the config? Can the python get the config value? Elsewhere in Spark we've had to worry about the precedence order if people set both, and it would be good if we could avoid this.