Make phantom type parameters covariant to avoid value restriction

OCaml's value restriction is relaxed:
Covariant type parameters do not lose polymorphism.