nsubstitute/NSubstitute — pull request #156 by alexandrnikitin (2014-07-16 00:16:11+00:00)
Title: Spike for #150 (Allow direct use of SubstituteFactory)

Hi everyone!

This is a quick spike for #150 (Allow direct use of SubstituteFactory).

I added:
- "AllSubstitutesWide" API wich looks like ```Substitute.Configure(params Func[] customCallHandlers)```. Also can be "oneSubstituteWide" too.
- ```Func[] CustomCallHandlers``` to ```ISubstitutionContext``` which stores all custom handlers.
- ```CustomCallHandlers``` as a new ```ICallHandler``` which handles calls and return values if needed.

I don't like that ```RouteAction``` is exposed outside but it can be repaced with ```object```.

Usage:
```csharp
Substitute.Configure(call => call.GetReturnType() == typeof(int) ? RouteAction.Return(5) : RouteAction.Continue());
var sub = Substitute.For();
Assert.AreEqual(5, sub.ReturnsInt());

public interface IInterface
{
int ReturnsInt();
}
```

Looking forward to your feedback.