Subtype improvements

During the work with the covariance, some bugs with `is_subtype` where identified.

The PR tries to improve the code and fixes those bugs.
It also simplifies the code in the formal types and propose a new `lookup_fixed` method on `MType`.