Generically creating a delegate from a MethodInfo with parameter upcasting - C#