- refactor `CreateHoodieTableCommand`;
- use `TBLPROPERTIES` syntax to pass config rather than `OPTIONS`, and keep compatible with `OPTIONS` syntax;
- force to provide `PrimaryKey`, so that make Update/Delete available;
- hudi spark-sql decouple from metastore as far as possible, get config from local hoodie.properties first;
- modify operation when insert/merge, make consistent with dataframe api.
- add parameter validation for recordKey, preCombineKey, keyGenerator, even if those parameters are defined by different keys.