Fixed dead_code warnings unused variable warnings
fn has_instance returns which instance which is missing if any
Fixed the check that all instance constraints are fulfilled

Previously only the first constraint where tested (.find() -> filter())
Fixed bug where constraints in instances where not propagated to variables

Example:
Unify
Eq a => [a] <-> [b]

b should have Eq in its context after the unification since the instance for Eq [a] is
instance Eq a => Eq [a] where ...

This commit fixes this