Cache MethodSignature's generated invocation methods based on the type IDs, so that uncached method signatures aren't quite so expensive to use.
Hoist SetLazyValueProperty calls out of MethodSignature and ConstructorSignature's constructors.