Refactor Contract a bit.
Add a way to elect one particular IC as an internal representation.
Rename target as datatype
Remove Datatype#undress
Add Infotype abstraction
Refactor to take Infotype into account.
Let Infotype build true subclasses.
Add Infotype#to_s