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

Currently, `CTAS` (Create Table As Select) doesn't support specifying the `SerDe` in HiveQL dialect. This PR will pass down the 'ASTNode` into the operator 'execution.CreateTableAsSelect', which will extract the `CreateTableDesc` object via Hive `SemanticAnalyzer`, and then create the table
If we populate metastore after evaluating the query, we also need to make sure information stored in `CreateTableDesc` will be correctly set to `tableInfo` in the `FileSinkDesc`. Also, if `TableDesc org.apache.hadoop.hive.ql.plan.PlanUtils.getTableDesc(CreateTableDesc, String, String)` will be used to create the `tableInfo`, the implementation of this method in hive 0.12 cannot be used because of the bug mentioned in https://issues.apache.org/jira/browse/HIVE-6083. Can you add a note at here?