[SPARK-3698][SQL] Correctly check case sensitivity in GetField

This PR is a follow up to https://github.com/apache/spark/pull/2382
It fix a bug when resolve something like `a.b[0].c.d`, https://github.com/apache/spark/pull/2382 only do case sensitive check when resolve `Unresolved("a.b")` to `GetField(Attribute("a"), "b")`, but not `c` and `d`.
I was going to put this logic into Analyzer rule, but found some tests depend on `GetField(child, fieldName)`, so I have to create this constructor of `GetField`. And these two are so similar, so I combine them together. Maybe I should fix those tests instead?