Reduce the amount of time spent creating record types that already exist.

The key in the type cache used to be the type (basically, its digest) and is now a pair consisting of the field names and types. The type factory checks for the type using a quick temporary key, then makes a permanent key if the type does not seem to exist. RelDataTypeFactory.createStructType(List<RelDataType>, List<String>) is now the best API to use, if speed is important; FieldInfoBuilder is fairly efficient too.