[SPARK-3343] [SQL] Add serde support for CTAS

Currently, `CTAS` (Create Table As Select) doesn't support specifying the `SerDe` in HQL. This PR will pass down the `ASTNode` into the physical operator `execution.CreateTableAsSelect`, which will extract the `CreateTableDesc` object via Hive `SemanticAnalyzer`. In the meantime, I also update the `HiveMetastoreCatalog.createTable` to optionally support the `CreateTableDesc` for table creation.
Yes, that's a good question.
Actually I was considering to resolving that in `HiveQl`, or `Analyzer` (in package hive), but it requires the "hiveconf" as input, which probably need some of the code refactor in the existed code. So I marked this operator as `Experimental`, and keep it for future updating.

```
val sa = new SemanticAnalyzer(sc.hiveconf)
sa.analyze(extra, new Context(sc.hiveconf))
```