Parameter validation for curried delegates

One lesser-known functionality in .NET delegates is the ability to curry the first parameter of a static function, as if it were an instance method.

There are a few known cases where this is used:

1. C# takes advantage of that when it allows for delegates to be created to "instance-like" invocations of extension methods.
2. The DLR also can choose to generate backing code for lambdas this way when the lambda doesn't close over other values, because CLR execution of the Invoke(...) method is noticeably faster (probably tuning for instance member invocations such as event handlers).
3. Roslyn (next generation .NET Compiler Platform) is exploring utilizing this technique on applicable lambdas, pending further analysis on compatibility. The usage case would be on lambdas that do not require capturing context ("static lambdas") - where it would shave ~33% off of delegate invocation overhead.