Implement {Iterable,Sequence{,d},Tuple}Types

* IterableType: {foo}
* SequenceType: foo[]
* SequencedType: foo*
* TupleType: [foo, bar]

{String*} is a SequencedType in an IterableType.
[String*] is a SequencedType in a TupleType.

That was a bit confusing at first :)
Add test for {Iterable,Sequence{,d},Tuple}Types