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.


It would, indeed.
I'd select both instance and static methods, as I might want to select an instance method from a static template and vice-versa.

I'd have to pass the ```owner``` to the ```TemplateMethodQuery``` to select instance methods.
To support static/abstract classes, I though it can have two constructors:
```public TemplateMethodQuery(MethodInfo template)```
```public TemplateMethodQuery(MethodInfo template, object owner)```

The first constructors would make ```this.owner``` null and it would select static methods only.

What do you think?

Making this change, there will be not one, but two ```IMethodFactory``` implementations, one for static methods, another for instance methods.