[corlib] Handle closed-over-null delegates created with IL when using InvokeDynamic. Fixes #21196.

The previous fix to handle curried delegates with DynamicInvoke did not correctly handle
those create with IL (in contrast to Delegate.CreateDelegate), as they don't hit any managed code.

The solution is to always require DelegateData to be filled for InvokeDynamic, if not, lazily
calculate it.
[corlib] Add regression test for #21196.