[SPARK-3007][SQL]Add "Dynamic Partition" support to Spark Sql hive

a new PR base on new master.  changes are the same as https://github.com/apache/spark/pull/1919
How do we check that we can insert those rows in correct partitions? Also, do we need to have tests to check whether the writer container can correctly handle multiple writers?