Refactor mocking strategies

This PR aims to clean up the `MockType` static class.

At the moment, this class contains a few utility extension methods related to the `Mock`/`Mock<T>` classes and some strategies for setting up mocks.
It seems to me defining mocking strategies should not be `MockType`'s responsibility. As new strategies are added, this class will get cluttered.
Also, there is no easy way for users to define their own strategies without having to re-write the command that uses it completely.

In my opinion, the simplest way to solve these problems is to move the strategy into its respective command, as @mrinaldi did here: #308 
If these methods are made `protected virtual`, users can simply extend the command.

E.g., to generate new values every time the method is called, instead of using memoization, simply:

```csharp
public class CustomMockVirtualMethodCommand : MockVirtualMethodsCommand
{
    protected override void SetupMethod<TMock, TResult>( /* ... */ )
    {
        mock.Setup(methodCallExpression)
                .Returns(x => (TResult) context.Resolve(typeof(TResult)));
    }
}
```

While there's a few places in AutoFixture where virtual members have snuck in, by general principle, we prefer composition over inheritance.

Could this be *speculative generality?*

Can we change our minds if we do it like this now? If we made those methods `private` now, could we then change our minds about the design later?