We now compare nested generics wrapped into TypeInformation to consider type equality for deeply parametrized types. Previously, we resolved type parameters to Class so Foo<List<String>> was considered equal to Foo<List<Map>> as the type parameter of the first nesting level was erased. Closes #3051