[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
Scaladoc comments should be formatted like this:

```scala
/**
 * Returns the Dynamic partition directory for the given row.  For example:
 ....
 */
```