Variant Parametric Types: A Flexible Subtyping Scheme for Generics