PARQUET-90: integrate field ids in schema

This integrates support for field is that was introduced in Parquet format.
Thrift and Protobufs ids will now be saved in the Parquet schema.

That's a good point. I was trying to limit the number of public constructors.

Let's remove the withOriginalType() method. As you said the builder you introduced has logic to validate that.

withId() does not have this problem as it does not require validation with the rest of the type. I'll try to use the builder instead but I'd still want to keep it there.

withNewFields() has a different purpose. When producing projected schemas, it is convenient to be able to just reuse the same group type with a new list of fields, that way the corresponding code does not need to depend on the notion of ID for example.