Two fixes involving kind checking

- Do kind checking when unifying with a type variable to catch certain malformed
  uses of functions that only that can catch; this is effectively checking
  that calling conventions will match.

- Delay defaulting of boxity until we need to convert to Convention. This allows
  you to define a function that takes a function over unboxed types without
  explicitly giving the argument a type.