[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.
OK, some ScalaCheck style random generated input may be helpful here.