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.
Refactor HasCompatibleParameterList(...) to be static

First step in moving new delegate currying-aware code to be part of shared extensions.
Extract out Delegate parameter validation to be its own method
Move HasCompatibleParameterList to be in Extensions
Simplify MethodCall code

Now that the delegate currying is in an extension method, might as well make the code similar to before to minimize the code diff.
Reverse conditional to prep for subsequent code change
Delegate lambda currying

In some versions of the Roslyn compiler, lambda backing methods can have an extra parameter to speed up CLR delegate invocations.

We use the valueDel in a few ways, sometimes the sentinel value delegate (no-op) takes in no parameters. In this case, we need to update this to use the new helper method to see if the current value in valueDel accepts no parameters (rather than literally checking to see if its backing method has zero parameters)
Make VerifySet/SetupSet aware of delegate currying.

Change a codeblock that tries to find the reflection parameter for the backing method of Action<T> by using the first parameter. In the case of curried delegates, there can be an extra parameter in front for the "logical instance". In that case, you actually can look at the last parameter instead.
Merge pull request #125 from theoy/master

Delegate currying refactorings