This PR is a sub-task of SPARK-33138(https://issues.apache.org/jira/browse/SPARK-33138). In order to make SQLConf.get reliable and stable, we need to make sure user can't pollute the SQLConf and SparkSession Context via calling setActiveSession and clearActiveSession.
Change of the PR:
- add legacy config spark.sql.legacy.allowModifyActiveSession to fallback to old behavior if user do need to call these two API.
- by default, if user call these two API, it will throw exception
- add extra two internal and private API setActiveSessionInternal and clearActiveSessionInternal for current internal usage
- change all internal reference to new internal API exception for SQLContext.setActive and SQLContext.clearActive