[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).
Also - will it be confusing that we require the user to specify the memory differently than in every other place? We should probably write a python function for interpreting memory strings ("128m", "15g") etc. As it is now the unit is unspecified, it's also inconsistent with other configs.