(PUP-1619) Add first impl of working Tuple Type
This adds the Tuple Type which is parameterized with a sequence
of types. The parameters also includes the ability to specify a range
of occurrences of the last type in the sequence (default 1).
This also makes a small refactor of type equality since Tuple and
Array may describe exactly the same type of instance, but it is
neither's responsibility to know this - hence, equality of types
is now performed by the TypeCalculator.
This commit also contains the model part of the PStructType
implementation.