Fix type-inference bug that allowed untyped scrutinees in case expressions

The following is an ill-typed program:
    data List a = Cons a (List a) | Nil;

    f m = case m of {
        Cons x xs -> 1;
        Nil       -> 2;
    };

    main = f True;

Inside the case expression, we know the scrutinee must be a list type, but that
information is lost outside. Therefore, we infer the type of f as
forall a. a -> Int. This is obviously wrong, but it lets main = f True
typecheck and then we fail at runtime:
    $ ./bin/mini-core badscrut.core
    No case for constructor True

Now, we make sure the propagate the type of the scrutinee further:
    $ ./bin/mini-core badscrut.core
    Type Error:
        Cannot unify 'List' and 'Bool'
    in:
        main = f True