The internal API supportDataType in FileFormat validates the output/input schema before task execution starts. So that we can avoid launching read/write tasks which would fail. Also, users can see clean error messages.
This PR is to implement the same internal API in the FileDataSourceV2 framework. Comparing to FileFormat, FileDataSourceV2 has multiple layers. The API is added in two places:
1. Read path: the table schema is determined in TableProvider.getTable. The actual read schema can be a subset of the table schema. This PR proposes to validate the actual read schema in FileScan.
2. Write path: validate the actual output schema in FileWriteBuilder.