Changed definedAt matcher to use Definition type class.
Fixed the type get eaten by subclass problem by marking T in Definition contra-variant.