Replaced usage of :self by SelfType.  Moved all implementations of is_restriction_of? to a separate file.