title: NSubstitute ReturnsForAnyArgs is returning null but shouldn't
body: <p>I have a problem in my test case, I am trying to mock the return of my <code>ICacheProvider</code> but it always returns<code>null</code>.</p>
  
  <pre><code>[Fact]
  public void Raise_ShoultReturnTrue_IfItsInCache()
  {
      var cacheProvider = Substitute.For&lt;ICacheProvider&gt;();
      cacheProvider.Fetch(Arg.Any&lt;string&gt;(), default(Func&lt;IEnumerable&lt;int&gt;&gt;)).ReturnsForAnyArgs(GetFakeCacheDB());
  
      //I was expecting the var below to contain the data from GetFakeCacheDB method
      var cacheProviderReturn = cacheProvider.Fetch("anything", returnEmpty); 
  
      //there is more stuff here but doesnt matter for the question    
  }
  
  private HashSet&lt;int&gt; returnEmpty()
  {
      return new HashSet&lt;int&gt;();
  }
  
  private IEnumerable&lt;int&gt; GetFakeCacheDB()
  {
      var cacheData = new List&lt;int&gt;()
                      {
                         57352,
                         38752
                      };    
      return cacheData;
  }
  
  public interface ICacheProvider
  {
      void Add&lt;T&gt;(string key, T item);
      void Add&lt;T&gt;(string key, T item, DateTime? absoluteExpiry, TimeSpan? relativeExpiry);
      T Fetch&lt;T&gt;(string key, Func&lt;T&gt; dataLookup);
      T Fetch&lt;T&gt;(string key, Func&lt;T&gt; dataLookup, DateTime? absoluteExpiry, TimeSpan? relativeExpiry);
      void Remove&lt;T&gt;(string key);
  }
  </code></pre>
  
  <p>What is wrong in my test case?</p>