[SPARK-38556][PYTHON] Disable Pandas usage logging for method calls inside @contextmanager functions
[SPARK-38556][PYTHON] Disable Pandas usage logging for method calls inside @contextmanager functions

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

Wrap AbstractContextManager returned by contexmanager decorator function in function calls. The comment in the code change explain why it uses a wrapper class instead of wrapping functions of AbstractContextManager directly.

### Why are the changes needed?

Currently, method calls inside contextmanager functions are treated as external for **with** statements.

For example, the below code records config.set_option calls inside ps.option_context(...)

```python
with ps.option_context("compute.ops_on_diff_frames", True):
    pass
```

We should disable usage logging for calls inside contextmanager functions to improve accuracy of the usage data

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

No

### How was this patch tested?

- Existing tests
- Manual test by running `./bin/pyspark` and verified the output:
```
>>> sc.setLogLevel("info")
>>> import pyspark.pandas as ps
22/03/15 17:10:50 INFO Log4jUsageLogger: pandasOnSparkImported=1.0, tags=List(), blob=
>>> with ps.option_context("compute.ops_on_diff_frames", True):
...     pass
...
22/03/15 17:11:17 INFO Log4jUsageLogger: pandasOnSparkFunctionCalled=1.0, tags=List(pandasOnSparkFunction=option_context(*args: Any) -> Iterator[NoneType], className=config, status=success), blob={"duration": 0.1615259999994123}
22/03/15 17:11:18 INFO Log4jUsageLogger: initialConfigLogging=1.0, tags=List(sparkApplicationId=local-1647360645198, sparkExecutionId=null, sparkJobGroupId=null), blob={"spark.sql.warehouse.dir":"file:/Users/yihong.he/spark/spark-warehouse","spark.executor.extraJavaOptions":"-XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED","spark.driver.host":"10.120.131.148","spark.serializer.objectStreamReset":"100","spark.driver.port":"61238","spark.rdd.compress":"True","spark.app.name":"PySparkShell","spark.submit.pyFiles":"","spark.ui.showConsoleProgress":"true","spark.app.startTime":"1647360644422","spark.executor.id":"driver","spark.driver.extraJavaOptions":"-XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED","spark.submit.deployMode":"client","spark.master":"local[*]","spark.sql.catalogImplementation":"hive","spark.app.id":"local-1647360645198"}
22/03/15 17:11:19 INFO Log4jUsageLogger: pandasOnSparkFunctionCalled=1.0, tags=List(pandasOnSparkFunction=option_context.__enter__(), className=config, status=success), blob={"duration": 1594.1569399999978}
22/03/15 17:11:19 INFO Log4jUsageLogger: pandasOnSparkFunctionCalled=1.0, tags=List(pandasOnSparkFunction=option_context.__exit__(type, value, traceback), className=config, status=success), blob={"duration": 12.610170000002086}
```

Closes #35861 from heyihong/SPARK-38556.

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

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