Allow arguments of types inherited from the declared types

Allow arguments of types inherited from the declared types.

For example, if the ADT is:

```
Shape = ADT do
  Rectangle(width: Numeric, height: Numeric)
end
```

then allow the Square::Rectangle constructor to accept any Numeric subclass, such as Fixnum (42), Float (42.1), Bignum (100000000000000000000000000000), Rational ( 3/2r ) and so on.