[SPARK-3421][SQL] Allows arbitrary character in StructField.name

`StructField.toString` now quotes the `name` field and escapes backslashes and double quotes within the string. The `DataType` parser is also updated to parse double quoted string as `StructField` name.

**UPDATE** Spark SQL Python binding is also updated.