Added covariant IMock<out T> interface to Mock<T>

I wanted to be able to write test utilities for setting up more complicated
object interactions. I wanted to make a method with this signature:

```csharp
void Method<T>(Mock<IService<T>> serviceMock);
```

that could recieve an object of type `Mock<IFooService>` as a parameter (where
`IFooService` extends `IService<Foo>`). Since only interfaces and delegates
can be covariant, the raw `Mock<T>` won't work. This pull request lets me use
this method:

```csharp
void Method<T>(IMock<IService<T>> serviceMock);
```

The `IMock<T>` interface exposes only the members where we can still make
`IMock<T>` covariant (i.e. nothing that has `T` in the parameter list).