Introduce variance for type parameters, not just region parameters

In short, `Option<&'static T>` ought to be usable where `Option<&'a T>` is expected.