Implementation of type extension

Simple implementation.
A super type has to be declared before.
The super types are visited recursively and the properties of the associated super definitions are merged with the ones of the current definition.