NSubstitute auto default values from fixture (fixes #297)

The solution is similar to what @dcastro did for AutoMoq on #302, but for NSubstitute.

There are a few differences, though:
It works with ref parameters
It won't setup void methods due to a limitation in NSubstitute that does not allow to override When..Do setups

Notes:
I had to late bind the NSubstitute methods because the signature of Returns and ReturnsForAnyArgs methods has changed a few times since 1.4.3 (had optional parameters added and return type changed). 
I added the classes that late binds the methods to the AutoFixture kernel as I though it might be helpful for someone else.

```LateBindingStaticMethodQuery```: Selects public static methods that has the same parameters of another method, ignoring optional parameters and return type.
```LateBoundMethod```: Decorates another method invoking it supplying missing optional parameters.
```GenericMethod```: Encapsulates a generic method, inferring the type parameters bases on invocation arguments.


You're right, it'll ignore both, from ```Object``` and from ```Class2```. But I'm wondering if this is really not desired. It looks a bit weird to setup for ```Class2``` but not for ```Class1```, seems inconsistent. 

Also, if ```Equals``` and ```GetHashCode``` are setup too, code might start behave incorrectly, as the result from those methods will be unpredictably generated by AutoFixture and return wrong result. I'd rather leave those methods alone.

AutoFixture only creates substitutes, by default, for abstract types, so all you have to do is ask AutoFixture to create the type: ```fixture.Create<Class2>()```, as long as ```Class2``` is abstract, of course.