[SPARK-38353][PYTHON] Instrument __enter__ and __exit__ magic methods for Pandas API on Spark
[SPARK-38353][PYTHON] Instrument __enter__ and __exit__ magic methods for Pandas API on Spark

### What changes were proposed in this pull request?

- Add magic method \_\_enter\_\_ and \_\_exit\_\_ into **the special_function list**

### Why are the changes needed?

- Improve the usage data accuracy for **with statement** so that external \_\_enter\_\_ and \_\_exit\_\_ calls are captured instead of internal calls

For example, for the code below:

```python
pdf = pd.DataFrame(
    [(0.2, 0.3), (0.0, 0.6), (0.6, 0.0), (0.2, 0.1)], columns=["dogs", "cats"]
)
psdf = ps.from_pandas(pdf)

with psdf.spark.cache() as cached_df:
    self.assert_eq(isinstance(cached_df, CachedDataFrame), True)
    self.assert_eq(
        repr(cached_df.spark.storage_level), repr(StorageLevel(True, True, False, True))
    )
 ```

Pandas-on-Spark usage logger records the internal call [self.spark.unpersist()](https://github.com/apache/spark/blob/master/python/pyspark/pandas/frame.py#L12518) since \_\_enter\_\_ and \_\_exit\_\_ methods of [CachedDataFrame](https://github.com/apache/spark/blob/master/python/pyspark/pandas/frame.py#L12492) are not instrumented.

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Existing unit tests

Closes #35687 from heyihong/SPARK-38353.

Authored-by: Yihong He <0501fcdf3da7099e20be4fbfeaa64616abfa87dd@databricks.com>
Signed-off-by: Hyukjin Kwon <2680965ad5aae29275c8fb10150cb10f5554e78b@apache.org>

rednaxelafx/apache-spark,rednaxelafx/apache-spark,zero323/spark,holdenk/spark,holdenk/spark,srowen/spark,nchammas/spark,cloud-fan/spark,vinodkc/spark,wangyum/spark,shaneknapp/spark,cloud-fan/spark,gengliangwang/spark,rednaxelafx/apache-spark,gengliangwang/spark,zero323/spark,dongjoon-hyun/spark,HyukjinKwon/spark,WeichenXu123/spark,zero323/spark,WeichenXu123/spark,WeichenXu123/spark,dongjoon-hyun/spark,rednaxelafx/apache-spark,srowen/spark,vinodkc/spark,nchammas/spark,ueshin/apache-spark,zzcclp/spark,JoshRosen/spark,zzcclp/spark,witgo/spark,holdenk/spark,cloud-fan/spark,HyukjinKwon/spark,gengliangwang/spark,apache/spark,vinodkc/spark,shaneknapp/spark,ueshin/apache-spark,mahak/spark,holdenk/spark,srowen/spark,ueshin/apache-spark,apache/spark,nchammas/spark,gengliangwang/spark,cloud-fan/spark,mahak/spark,cloud-fan/spark,JoshRosen/spark,witgo/spark,wangyum/spark,zero323/spark,rednaxelafx/apache-spark,JoshRosen/spark,hvanhovell/spark,srowen/spark,HyukjinKwon/spark,vinodkc/spark,vinodkc/spark,rednaxelafx/apache-spark,holdenk/spark,hvanhovell/spark,HyukjinKwon/spark,cloud-fan/spark,dongjoon-hyun/spark,zzcclp/spark,witgo/spark,apache/spark,holdenk/spark,HyukjinKwon/spark,wangyum/spark,hvanhovell/spark,hvanhovell/spark,wangyum/spark,zero323/spark,srowen/spark,dongjoon-hyun/spark,wangyum/spark,zzcclp/spark,ueshin/apache-spark,witgo/spark,zzcclp/spark,shaneknapp/spark,gengliangwang/spark,WeichenXu123/spark,WeichenXu123/spark,witgo/spark,JoshRosen/spark,ueshin/apache-spark,JoshRosen/spark,dongjoon-hyun/spark,wangyum/spark,WeichenXu123/spark,vinodkc/spark,HyukjinKwon/spark,zzcclp/spark,hvanhovell/spark,hvanhovell/spark,gengliangwang/spark,zzcclp/spark,zero323/spark,srowen/spark,WeichenXu123/spark,shaneknapp/spark,ueshin/apache-spark,apache/spark,dongjoon-hyun/spark,JoshRosen/spark,apache/spark,vinodkc/spark,mahak/spark,nchammas/spark,shaneknapp/spark,mahak/spark,wangyum/spark,apache/spark,gengliangwang/spark,srowen/spark,JoshRosen/spark,hvanhovell/spark,cloud-fan/spark,shaneknapp/spark,mahak/spark,mahak/spark,shaneknapp/spark,dongjoon-hyun/spark,nchammas/spark,mahak/spark,holdenk/spark,witgo/spark,zero323/spark,nchammas/spark,apache/spark,ueshin/apache-spark,witgo/spark,nchammas/spark,HyukjinKwon/spark,rednaxelafx/apache-spark