Fix a bug in type-inference for cases that wasn't propagating the substitution

Given the following definitions:

data List a = Cons a (List a) | Nil;

map f ls = case ls of {
    Cons x xs -> Cons (f x) (map f xs);
    Nil       -> Nil;
};

Type-inference was assigning the following erroneous type for map:

map :: forall a b c. c -> List a -> List b

The main issue was that in combine (~line 320) we were just discarding the
accumulated substition derived from the previous case branch. Now, map
is assigned the correct type:

map :: forall a b. (a -> b) -> List a -> List b