Added MockExtensions.Reset() to clear mock state (expectations+invocations)

This change adds `MockExtensions.Reset(Mock)` that completely resets the mock by removing all expectations and all actual invocations.

**Use case:**
Mocking singleton-lifetime object in integration tests where it is not possible to reset application state completely between tests -- so the mock instance can potentially be cached in other singleton services and cannot be replaced with a new mock.