[SPARK-3720][SQL]initial support ORC  in spark sql

Provide a initial support for orc file formate in spark sql,  support for both reading and writing ORC files . user can use ORC file just like parquet as follow:
```
... ...
  rdd.registerTempTable("records")
  rdd.saveAsOrcFile("pair.orc")
  val orcFile = sqlContext.orcFile("pair.orc")
  orcFile.registerTempTable("orcFile")
  sql("SELECT * FROM orcFile").collect().foreach(println)
```

We can avoid per row dispatching and pattern matching cost here. Please refer to [`TableReader.scala`](https://github.com/apache/spark/blob/92e017fb894be1e8e2b2b5274fec4c31a7a4412e/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala#L279-L315) for details.